XML 解析錯誤:格式不佳位置:http://www.xxx.com/admin/order.php?act=operate行 1,列 6:http://xxx.com/wuliu.php?Request=-----^
提示這個錯誤
$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>wjys20160505643772016050564377101421倉庫遷安市電子商務服務中心064400河北省唐山市遷安市遷安電商穀0315-75725550315-7572555喬鶴25號樓四單元301064400河北省遷安市5 大王莊平改樓25號樓四單元3011523268288815232682888000普通訂單鄉伊香核桃油 1000ml168.0069442194002340010
我不明白的是 這裡的$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); }
完全不知道怎麼做求大神們協助下。
回複討論(解決方案)
你都用post了 為什麼要把xml文檔放在url上面呢, 然後你類比的post提交 裡面提交的資料還是數組。。。。有點矛盾。。
不知道你要幹什麼
也不知道對方能接收什麼
我發現 只要是在xml資料前面加上任何字元。都會提示格式不加。 那他的介面要求的資料格式
請求採用HTTP標準的POST協議採用,請求參數通過xml格式,驗證的模式定為MD5驗證。拋送格式為:http://*****.php?Request=Xml&MD5=XXX&Action=請求指令。編碼格式為:UTF-8
我怎麼給他發過去啊???
這是他的整個資料請求
http://xxx.xx.xx.xxx:850/order.php?Request=< WaybillNo>1111102354< ClientCode>Sp001< Holiday>1< ReplCost>20.2< StmtForm>0< TrustClientCode>111234王三< TrustUnit>好樂買< TrustZipCode>001北京< TrustCity>北京市朝陽區< TrustAddress>三裡屯SOHO大廈3D15層< TrustMobile>13436709024< TrustTel>010-3650092< GetPerson>李三< GetUnit>XXX公司< GetZipCode>010< GetProvince>廣東省深圳市羅湖區< GetAddress>人民南路1號京廣大廈A406室< GetTel>755-3456789< GetMobile>13436700238< InsForm>0< InsureValue>< GoodsValue>30.45< WorkType>0xxx< /OrderType>< GoodsName>XXX商品< GoodsValue >20.34 009870< ISInvoice>0< ISInvoice>< GoodsName>YYY商品< GoodsValue >20 009870< ISInvoice>1< ISInvoice>2< GoodsHav>2&MD5=SDJ21W3E1WRE1SDF2ER34D1RTRE113DF&Action=RequestOrder
個人拙見:他既然要用post請求, 那http://*****.php 這個就是 url
Request=Xml&MD5=XXX&Action=請求指令。
這些就是參數,是不是要把這個三個參數組成xml文檔?
那你直接get過去就行了啊
那你直接get過去就行了啊
將xml資料轉換為字串。然後拼接url好像就行了
不知道你要幹什麼
也不知道對方能接收什麼
我要向一個介面發送資料請求,格式如下
http://xxx.xx.xx.xxx:850/order.php?Request=< WaybillNo>1111102354< ClientCode>Sp001< Holiday>1< ReplCost>20.2< StmtForm>0< TrustClientCode>111234王三< TrustUnit>好樂買< TrustZipCode>001北京< TrustCity>北京市朝陽區< TrustAddress>三裡屯SOHO大廈3D15層< TrustMobile>13436709024< TrustTel>010-3650092< GetPerson>李三< GetUnit>XXX公司< GetZipCode>010< GetProvince>廣東省深圳市羅湖區< GetAddress>人民南路1號京廣大廈A406室< GetTel>755-3456789< GetMobile>13436700238< InsForm>0< InsureValue>< GoodsValue>30.45< WorkType>0xxx< /OrderType>< GoodsName>XXX商品< GoodsValue >20.34 009870< ISInvoice>0< ISInvoice>< GoodsName>YYY商品< GoodsValue >20 009870< ISInvoice>1< ISInvoice>2< GoodsHav>2&MD5=SDJ21W3E1WRE1SDF2ER34D1RTRE113DF&Action=RequestOrder
格式要求為
請求採用HTTP標準的POST協議採用,請求參數通過xml格式,驗證的模式定為MD5驗證。拋送格式為:http://*****.php?Request=Xml&MD5=XXX&Action=請求指令。編碼格式為:UTF-8
不知道你要幹什麼
也不知道對方能接收什麼
提供一組數組
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,)
既然是 請求採用HTTP標準的POST協議
那麼你放在 url 裡做什嗎?
既然是 請求採用HTTP標準的POST協議
那麼你放在 url 裡做什嗎?
他給我的例子不是http://xxx.xx.xx.xxx:850/order.php?Request= xml資訊 這樣的嗎?難道不是放在url中?
好像是的
但應理解為,雖然資料放在了 url 上,但訪問方式還是 post 的
即:CURLOPT_POST 為真,CURLOPT_POSTFIELDS 為空白(或沒有)
用POST方式,需要把資料放在CURLOPT_POSTFIELDS,
而放在url的參數要用GET來擷取