XML 解析錯誤:格式不佳?求解

來源:互聯網
上載者:User
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來擷取

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.