PHP 通过CURL POST XML数据

PHP 通过CURL post xml数据到远程地址
1、CURL POST方法
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:text/xml; charset=utf-8"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//Post提交的数据包
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);

curl_close($ch);
header('Content-Type:text/xml; charset=utf-8');

2、下面是XML数据

<?xml version="1.0" encoding="utf-8"?><request><deliveryOrder><orderType>CC</orderType><deliveryOrderCode>add2</deliveryOrderCode><warehouseCode>BJA</warehouseCode><confirmType>0</confirmType><logisticsCode>邮政标快</logisticsCode><senderInfo><company>公司名称</company><name>姓名</name><mobile>移动电话</mobile><province>省份</province><city>城市</city><area>区域</area><detailAddress>详细地址</detailAddress></senderInfo><receiverInfo><company>公司名称</company><name>姓名</name><mobile>移动电话</mobile><province>省份</province><city>城市</city><area>区域</area><detailAddress>详细地址</detailAddress></receiverInfo></deliveryOrder><orderLines><orderLine><ownerCode></ownerCode><itemCode>CTEST001</itemCode><itemId></itemId><itemName>测试物品一</itemName><planQty>5</planQty><actualPrice>50</actualPrice></orderLine><orderLine><ownerCode></ownerCode><itemCode>CTEST002</itemCode><itemId></itemId><itemName>测试物品二</itemName><planQty>5</planQty><actualPrice>50</actualPrice></orderLine></orderLines><extendProps><key1>1213333</key1><key2>1212</key2><key3>1313212</key3></extendProps></request>

提交之后 一直报错
This page contains the following errors:

error on line 1 at column 50: Space required after the Public Identifier
Below is a rendering of the page up to the first error.

查询XML报文数据信息 没有什么错误,求大侠解决 是CURL方法写的不对 还是其他问题

阅读 6.5k
2 个回答
$ch = curl_init();
$timeout = 30; 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:text/xml; charset=utf-8"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//Post提交的数据包
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

有时候远程服务器错误返回的是类似于500错误一样,这时候返回的数据就不是xml的,建议你打印一下。

谢谢邀请。提交之后报错?建议你在提交之后做个断点输出看看是不是有什么错误信息。具体原因只能一点点的输出找找看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏