XML 解析错误:格式不佳?求解

legendnan 2016-05-05 09:20:53

XML 解析错误:格式不佳
位置:http://www.xxx.com/admin/order.php?act=operate
行 1,列 6:http://xxx.com/wuliu.php?Request=<?xml version='1.0' encoding='UTF-8'?>
-----^

提示这个错误

$wj_curl = new wj_curl();
//var_dump($wj_curl :: ss());
$resR = $wj_curl -> xmlEncode($RequestOrderviews);
//print_r($resR);
$url = 'http://xxxx.com/wuliu.php?Request='.$resR.'&MD5='.$md5.'&Action=RequestOrder';
print_r($url);

我是这样打印的,$resR是一个xml数据。格式是正确的如下

RequestOrder><WaybillNo>wjys2016050564377</WaybillNo><ClientCode>2016050564377</ClientCode><Holiday>1</Holiday><ReplCost>0</ReplCost><StmtForm>1</StmtForm><TrustClientCode>421</TrustClientCode><TrustPerson>仓库</TrustPerson><TrustUnit>迁安市电子商务服务中心</TrustUnit><TrustZipCode>064400</TrustZipCode><TrustProvince>河北省</TrustProvince><TrustCity>唐山市</TrustCity><TrustArea>迁安市</TrustArea><TrustAddress>迁安电商谷</TrustAddress><TrustMobile>0315-7572555</TrustMobile><TrustTel>0315-7572555</TrustTel><GetPerson>乔鹤</GetPerson><GetUnit>25号楼四单元301</GetUnit><GetZipCode>064400</GetZipCode><GetProvince>河北省</GetProvince><GetCity>迁安市</GetCity><GetArea>5 大王庄平改楼</GetArea><GetAddress>25号楼四单元301</GetAddress><GetTel>15232682888</GetTel><GetMobile>15232682888</GetMobile><InsForm>0</InsForm><InsureValue>0</InsureValue><WorkType>0</WorkType><OrderType>普通订单</OrderType><GoodsInfo><Good><GoodsName>乡伊香核桃油 1000ml</GoodsName><GoodsValue>168.00</GoodsValue><GoodsBarCode>6944219400234</GoodsBarCode><ListType>0</ListType><ISInvoice>0</ISInvoice></Good></GoodsInfo><GoodsNum>1</GoodsNum><GoodsHav>0</GoodsHav></RequestOrder>

我不明白的是 这里的$url我只是给xml拼接进去了就给报错?这是为什么?我的目的向一个借口发送xml数据,我打算通过curl post方式 发送。
下面是我的curl

public static function my_curl($uri,$xmlData=array()){
$url = $uri; //接收xml数据的文件
$header = array("content-type: application/x-www-form-urlencoded;"); //定义content-type为xml,注意是数组
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
$response = curl_exec($ch);
if(curl_errno($ch)){
print curl_error($ch);
}
curl_close($ch);
}

完全不知道怎么做求大神们帮助下。
...全文
11721 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
好像是的 但应理解为,虽然数据放在了 url 上,但访问方式还是 post 的 即:CURLOPT_POST 为真,CURLOPT_POSTFIELDS 为空(或没有)
legendnan 2016-05-05
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
既然是 请求采用HTTP标准的POST协议 那么你放在 url 里做什么?
他给我的例子不是http://xxx.xx.xx.xxx:850/order.php?Request= xml信息 这样的吗?难道不是放在url中?
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
既然是 请求采用HTTP标准的POST协议 那么你放在 url 里做什么?
legendnan 2016-05-05
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
不知道你要干什么 也不知道对方能接收什么
提供一组数组

Array
(
    'WaybillNo' => 'wjys2016050564377',
    'ClientCode' => '2016050564377',
    'Holiday' => '1',
    'ReplCost' => '0',
    'StmtForm' => '1',
    'TrustClientCode' => '421',
    'TrustPerson' =>'仓库',
    'TrustUnit' => '商务服务中心',
    'TrustZipCode' => '064400',
    'TrustProvince' => '河北省',
    'TrustCity' => '市',
    'TrustArea' => '市',
    'TrustAddress' => '谷',
    'TrustMobile' => '0355',
    'TrustTel' => '055',
    'GetPerson' => '乔鹤',
    'GetUnit' => '25号楼四单元301',
    'GetZipCode' => '064400',
    'GetProvince' => '河北省',
    'GetCity' => '市',
    'GetArea' => '平改楼',
    'GetAddress' => '25号楼四单元301',
    'GetTel' => '15232682888',
    'GetMobile' => '15232682888',
    'InsForm' => '0',
    'InsureValue' => '0',
    'WorkType' => '0',
    'OrderType' => '普通订单',
    'GoodsInfo' => Array
        (
            'Good' => Array
                (
                    'GoodsName' => '乡伊香核桃油',
                    'GoodsValue' => '168',
                    'GoodsBarCode' => '6944219400234',
                    'ListType' => '0',
                    'ISInvoice' => '0',
                ),

        ),

    'GoodsNum' => 1,
    'GoodsHav' => 0,
)
legendnan 2016-05-05
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
不知道你要干什么 也不知道对方能接收什么
我要向一个接口发送数据请求,格式如下

http://xxx.xx.xx.xxx:850/order.php?Request=
<RequestOrder>
	< WaybillNo>1111102354</ WaybillNo>
< ClientCode>Sp001</ ClientCode>
< Holiday>1</ Holiday>
< ReplCost>20.2</ ReplCost>
< StmtForm>0</ StmtForm>
< TrustClientCode>111234</ TrustClientCode>
<TrustPerson>王三</ TrustPerson>
< TrustUnit>好乐买</ TrustUnit>
< TrustZipCode>001</ TrustZipCode>
<TrustProvince>北京</ TrustProvince>
< TrustCity>北京市</ TrustCity>
<TrustArea>朝阳区</TrustArea>
< TrustAddress>三里屯SOHO大厦3D15层</ TrustAddress>
< TrustMobile>13436709024</ TrustMobile>
< TrustTel>010-3650092</ TrustTel>
< GetPerson>李三</ GetPerson>
< GetUnit>XXX公司</ GetUnit>
< GetZipCode>010</ GetZipCode>
< GetProvince>广东省</ GetProvince>
<GetCity>深圳市</ GetCity>
<GetArea>罗湖区</ GetArea>
< GetAddress>人民南路1号京广大厦A406室</ GetAddress>
< GetTel>755-3456789</ GetTel>
< GetMobile>13436700238</ GetMobile>
< InsForm>0</ InsForm>
< InsureValue></ InsureValue>
< GoodsValue>30.45</ GoodsValue>
< WorkType>0</ WorkType>
<OrderType>xxx< /OrderType>
<GoodsInfo>
<Good>
< GoodsName>XXX商品</ GoodsName>
< GoodsValue >20.34 </ GoodsValue >
<GoodsBarCode>00987</ GoodsBarCode>
<ListType>0</ ListType>
< ISInvoice>0< ISInvoice>
</Good>
<Good>
< GoodsName>YYY商品</ GoodsName>
< GoodsValue >20 </ GoodsValue >
<GoodsBarCode>00987</ GoodsBarCode>
<ListType>0</ ListType>
< ISInvoice>1< ISInvoice>
</Good>
</GoodsInfo>
<GoodsNum>2</GoodsNum>
< GoodsHav>2</ GoodsHav>
</ RequestOrder>
&MD5=SDJ21W3E1WRE1SDF2ER34D1RTRE113DF
&Action=RequestOrder
格式要求为
请求采用HTTP标准的POST协议采用,请求参数通过xml格式,验证的模式定为MD5验证。抛送格式为:http://*****.php?Request=Xml&MD5=XXX&Action=请求指令。编码格式为:UTF-8 
legendnan 2016-05-05
  • 打赏
  • 举报
回复
引用 6 楼 u013358222 的回复:
那你直接get过去就行了啊
将xml数据转换为字符串。然后拼接url好像就行了
山水天元 2016-05-05
  • 打赏
  • 举报
回复
个人拙见:他既然要用post请求, 那http://*****.php 这个就是 url Request=Xml&MD5=XXX&Action=请求指令。 这些就是参数,是不是要把这个三个参数组成xml文档?
legendnan 2016-05-05
  • 打赏
  • 举报
回复
这是他的整个数据请求

http://xxx.xx.xx.xxx:850/order.php?Request=
<RequestOrder>
	< WaybillNo>1111102354</ WaybillNo>
< ClientCode>Sp001</ ClientCode>
< Holiday>1</ Holiday>
< ReplCost>20.2</ ReplCost>
< StmtForm>0</ StmtForm>
< TrustClientCode>111234</ TrustClientCode>
<TrustPerson>王三</ TrustPerson>
< TrustUnit>好乐买</ TrustUnit>
< TrustZipCode>001</ TrustZipCode>
<TrustProvince>北京</ TrustProvince>
< TrustCity>北京市</ TrustCity>
<TrustArea>朝阳区</TrustArea>
< TrustAddress>三里屯SOHO大厦3D15层</ TrustAddress>
< TrustMobile>13436709024</ TrustMobile>
< TrustTel>010-3650092</ TrustTel>
< GetPerson>李三</ GetPerson>
< GetUnit>XXX公司</ GetUnit>
< GetZipCode>010</ GetZipCode>
< GetProvince>广东省</ GetProvince>
<GetCity>深圳市</ GetCity>
<GetArea>罗湖区</ GetArea>
< GetAddress>人民南路1号京广大厦A406室</ GetAddress>
< GetTel>755-3456789</ GetTel>
< GetMobile>13436700238</ GetMobile>
< InsForm>0</ InsForm>
< InsureValue></ InsureValue>
< GoodsValue>30.45</ GoodsValue>
< WorkType>0</ WorkType>
<OrderType>xxx< /OrderType>
<GoodsInfo>
<Good>
< GoodsName>XXX商品</ GoodsName>
< GoodsValue >20.34 </ GoodsValue >
<GoodsBarCode>00987</ GoodsBarCode>
<ListType>0</ ListType>
< ISInvoice>0< ISInvoice>
</Good>
<Good>
< GoodsName>YYY商品</ GoodsName>
< GoodsValue >20 </ GoodsValue >
<GoodsBarCode>00987</ GoodsBarCode>
<ListType>0</ ListType>
< ISInvoice>1< ISInvoice>
</Good>
</GoodsInfo>
<GoodsNum>2</GoodsNum>
< GoodsHav>2</ GoodsHav>
</ RequestOrder>
&MD5=SDJ21W3E1WRE1SDF2ER34D1RTRE113DF
&Action=RequestOrder
山水天元 2016-05-05
  • 打赏
  • 举报
回复
那你直接get过去就行了啊
legendnan 2016-05-05
  • 打赏
  • 举报
回复
我发现 只要是在xml数据前面加上任何字符。都会提示格式不加。 那他的接口要求的数据格式
请求采用HTTP标准的POST协议采用,请求参数通过xml格式,验证的模式定为MD5验证。抛送格式为:http://*****.php?Request=Xml&MD5=XXX&Action=请求指令。编码格式为:UTF-8 
我怎么给他发过去啊???
山水天元 2016-05-05
  • 打赏
  • 举报
回复
你都用post了 为什么要把xml文档放在url上面呢, 然后你模拟的post提交 里面提交的数据还是数组。。。。有点矛盾。。
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
不知道你要干什么 也不知道对方能接收什么
傲雪星枫 2016-05-05
  • 打赏
  • 举报
回复
用POST方式,需要把数据放在CURLOPT_POSTFIELDS, 而放在url的参数要用GET来获取

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧