连接到XML文件的CFHTTP问题

时间:2013-09-04 07:45:36

标签: xml coldfusion

我有以下xml,它包含在名为Inventory4zeroone.xml的文件中:

<?xml version="1.0" encoding="UTF-8"?>
<Flexquery>
  <QueryName>Ecommerce Inventory</QueryName>
  <Data>
    <Item>
      <Web>1</Web>
      <productID>8203291034586124284</productID>
      <item_SID></item_SID>
      <categoryID>MC</categoryID>
      <title>SWOOSH RND FRT HOOD WHITE LRG</title>
      <description>Great Product</description>
      <price>34.5</price>
      <qty>17</qty>
      <image>8203291034586124284.jpg</image>
      <thumb>8203291034586124284_t.jpg</thumb>
      <active>1</active>
      <updatedDate>3/18/2013 11:31:41 AM</updatedDate>
    </Item>
    <Item>
      <Web>1</Web>
      <productID>8203291034586124285</productID>
      <item_SID></item_SID>
      <categoryID>MC</categoryID>
      <title>ACME RND FRT HOOD WHITE LRG</title>
      <description>Great Product</description>
      <price>49.2</price>
      <qty>19</qty>
      <image>8603291034586124284.jpg</image>
      <thumb>8603291034586124284_t.jpg</thumb>
      <active>1</active>
      <updatedDate>3/18/2013 11:31:41 AM</updatedDate>
    </Item>
  </Data>
</Flexquery>

我可以直接在http://www.scrapbookcentral.co.nz/xml/inventory4zeroone.xml浏览此内容。

但是,当我尝试通过CFHTTP获取此文件时,如下所示:

<cfhttp url="http://www.scrapbookcentral.co.nz/xml/inventory4zeroone.xml" 
        method="GET" 
        resolveurl="yes">

我收到以下错误:

enter image description here

您可以在http://www.scrapbookcentral.co.nz/tasks/rpImportInventory.cfm

查看此情况

我发现site with a solution到“无法确定文件的MIME类型”部分错误,因此我将调用更改为:

<cfhttp url="http://www.scrapbookcentral.co.nz/xml/inventory4zeroone.xml" 
        method="GET" 
        resolveurl="yes">
    <cfhttpparam type="header" name="mimetype" value="application/xml" />
</cfhttp>

那不起作用。发生完全相同的错误。

所以,我读了其他网站说它可能是防火墙问题。但是,我们的系统管理员说没有防火墙问题可以访问这些文件。

所以,我目前处于亏损状态,并希望得到任何帮助。

2 个答案:

答案 0 :(得分:2)

一定是你的网络。

尝试在http://cflive.net/运行您的代码 - 它运行正常。

我跑了这个:

<cfhttp url="http://www.scrapbookcentral.co.nz/xml/inventory4zeroone.xml" method="GET" result="myResult">
<cfhttpparam type="header" name="mimetype" value="application/xml" />
</cfhttp>
<cfdump var="#myResult#">

一切正常。我只是删除了解决方案,并且可能添加userAgent,因为某些服务器设置为不允许来自非浏览器的连接。

答案 1 :(得分:0)

我认为@Lucas是对的,这可能是一个网络问题。如果要确认这一点,请安装fiddler(http://fiddler2.com/)并将proxyServer =“computer.running.fiddler”和proxyPort =“8888”添加到cfhttp调用中。

然后,您可以比较浏览器和CF正在使用的请求标头。您可以使用composer选项卡编辑并重新运行CF所提出的请求。逐个将标题从浏览器的请求复制到CF中并重新尝试。在某些时候它会开始工作,你将找到你需要改变的标题。