0

我有以下 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">

我收到以下错误:

在此处输入图像描述

您可以在http://www.scrapbookcentral.co.nz/tasks/rpImportInventory.cfm查看发生的情况

我找到了一个解决“无法确定文件的 MIME 类型”部分错误的站点,因此我将调用更改为:

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

那没有用。发生完全相同的错误。

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

所以,我目前不知所措,希望能提供任何帮助。

4

2 回答 2

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#">

一切都很好。我只是删除了 resolveurl 位,并且可能添加了 userAgent,因为某些服务器被设置为不允许来自非浏览器的连接。

于 2013-09-04T08:19:40.320 回答
0

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

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

于 2013-09-04T08:32:57.807 回答