我使用curl和xml将我的xml发布到URL。
我现在正在收到回复,但它没有显示在输出中。
当我通过右键单击View Source
页面时,就像XML文件输出一样。
我需要将该xml文档存储到文件中。
我使用下面的代码
<?
$path = "https://newport.ingrammicro.com/mustang"; //Relative path to the file with $_POST parsing
$ch = curl_init($path); //Initialise curl resource with above file
$data = "my xml document to post";
//Data to be sent to the file
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //Send the data to the file?
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
$val = curl_exec($ch);
curl_close($ch); //Close curl session
$fp = fopen('data.xml', 'w');
fwrite($fp, $val);
fclose($fp);
?>
但是当我打开保存的文件时只有一个值"1"
,这是我在文件中得到的值。
实际上它是curl语句的真值($ val = curl_exec($ ch);) 布尔(真) 我试图回应Sval的价值,它也是“1”
如何将XML输出文件完全保存为XML文件输出。当我使用查看页面源
时它看起来像这样
<PNAResponse>
<Version>2.0</Version>
<TransactionHeader>
<SenderID>14-018111</SenderID>
<ReceiverID>14-018111</ReceiverID>
<ErrorStatus ErrorNumber=""/>
<DocumentID>{F1B17BBB-F848-4693-914A-B6943AA9009A}</DocumentID>
<TransactionID/>
<TimeStamp>2009-06-17T22:42:44</TimeStamp>
</TransactionHeader>
<PriceAndAvailability SKU="V06669" Quantity="5" GovtProgramType="PA" GovtEndUserType="F">
<Price>1413.04</Price>
<SpecialPriceFlag>Y</SpecialPriceFlag>
<ManufacturerPartNumber>V11H270020</ManufacturerPartNumber>
<ManufacturerPartNumberOccurs/>
<VendorNumber>4913</VendorNumber>
<Description>POWERLITE 1735W LCD PROJ</Description>
<ReserveInventoryFlag>N</ReserveInventoryFlag>
<AvailableRebQty>0</AvailableRebQty>
<Branch ID="10" Name="Mira Loma, California">
<Availability>7</Availability>
<OnOrder>8</OnOrder>
<ETADate>2009-06-19</ETADate>
</Branch>
<Branch ID="30" Name="Millington, Tennessee">
<Availability>0</Availability>
<OnOrder>4</OnOrder>
<ETADate>2009-06-22</ETADate>
</Branch>
<Branch ID="40" Name="Carol Stream, Illinois">
<Availability>0</Availability>
<OnOrder>18</OnOrder>
<ETADate>2009-06-18</ETADate>
</Branch>
<Branch ID="80" Name="Jonestown Pennsylvania">
<Availability>0</Availability>
<OnOrder>9</OnOrder>
<ETADate>2009-06-23</ETADate>
</Branch>
</PriceAndAvailability>
</PNAResponse>
有没有人知道如何做到这一点?
答案 0 :(得分:1)
将CURLOPT_RETURNTRANSFER
设为true
:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
为什么你首先将它设置为0?
答案 1 :(得分:1)
curl_exec()函数在成功时返回TRUE,在失败时返回FALSE,除非将CURLOPT_RETURNTRASFER设置为true(1):
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
这将导致curl_exec()函数返回请求的响应主体而不是true / false值。
上的“返回值”部分答案 2 :(得分:1)
如果你想尝试添加一些用户代理,以确保你获得与真实浏览器相同的输出
@curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
答案 3 :(得分:0)
就像Grabiel Sosa所说,“你可能想尝试添加一些用户代理,以确保你获得与真实浏览器相同的输出”。
网站http://www.user-agents.org/index.shtml?moz包含大量的用户代理(Mozilla及其他)