2016-11-30 5 views
9

क्या सादा स्ट्रिंग के बजाय जेसन या एक्सएमएल प्रारूप में अमेज़ॅन MWS अनुरोध के परिणाम प्राप्त करने का कोई तरीका है?जेसन या एक्सएमएल के लिए अमेज़ॅन मेगावाट के परिणाम प्राप्त करें और उन्हें विस्तृत करें

मेरी कोड है निम्नलिखित:

public function listOrders() 
{ 
    $request = "https://mws.amazonservices.it/Orders/2013-09-01?"; 
    $request .= $this->getParameterString($this->parameters) . "&Signature=" . $this->calculateSignature($this->calculateStringToSign($this->parameters)); 

    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $request); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    // grab URL and pass it to the browser 

    $a = curl_exec($ch); 
    echo $a; 
    return $a; 
} 

जब $ एक दिखाया गया है मैं (विस्तार के कुछ संभावनाओं के साथ एक सादे स्ट्रिंग) इस देखें:

2016-11-21T22:59:59Z StandardOrder 2016-11-17T06:24:44Z 2016-11-17T18:47:54Z [email protected] 402-2385999-1452355 1 IT Std Domestic Shipped Amazon.it false 0 2016-11-25T22:59:59Z nico 2016-11-20T23:00:00Z EUR 199.00 false 2016-11-17T23:00:00Z APJ6JRA9NG5V4 MFN Other arezzo 3332260766 pratovecchio stia IT 52015 nico via ro 92/94/96 false Standard 2016-11-22T22:59:59Z StandardOrder 2016-11-19T18:35:43Z 2016-11-21T18:14:04Z [email protected] 171-6439117-6622751 1 IT Std Domestic Shipped Amazon.it false 0 2016-11-26T22:59:59Z s 2016-11-22T23:00:00Z EUR 130.00 false 2016-11-20T23:00:00Z APJ6JRA9NG5V4 MFN Other CA 3926624273 Cagliari IT 09126 Samuele civico 244 false Standard 2016-11-28T22:59:59Z StandardOrder 2016-11-24T11:30:20Z 2016-11-24T18:46:12Z [email protected] 404-3098817-1844319 1 IT Std Domestic Shipped Amazon.it false 0 2016-12-02T22:59:59Z ini 2016-11-27T23:00:00Z EUR 110.00 false 2016-11-24T23:00:00Z APJ6JRA9NG5V4 MFN Other latina 3286028770 terracina IT 04019 ... 

लेकिन अगर मैं $ अनुरोध कॉपी मेरे ब्राउज़र में, जो मैं देखता हूं वह एक एक्सएमएल प्रारूप प्रतिक्रिया है।

मैं कैसे कर सकता हूं?

+0

यदि आप ब्राउज़र में '$ a' को प्रतिबिंबित कर रहे हैं, तो क्या यह हो सकता है कि ब्राउज़र केवल xml टैग छुपा रहा हो? क्या आपने स्रोत देखा? या 'var_dump ($ ए) 'आज़माएं? – fredrover

+0

एक और नोट है कि XML को HTML में टैग के रूप में उपयोग किया जाएगा जब डाउनलोड की आपकी प्रत्येक आउटपुट सामग्री जो एक्सएमएल के रूप में दिखाती है, आपको इसे चलाने चाहिए, हालांकि 'htmlentities' यह आपके लिए HTML वर्णों से बच जाएगा ताकि आप उन्हें अन्य विकल्प देख सकें स्रोत देखें। –

उत्तर

2

response format documentation बताता है कि केवल एक्सएमएल प्रतिक्रियाएं लौटा दी जाएंगी। हालांकि, अगर मैं आपके ओपी को सही ढंग से समझ रहा हूं, तो आप अपने ब्राउज़र के माध्यम से भेजे जाने पर कर्ल और एक्सएमएल प्रतिक्रियाओं के माध्यम से भेजे जाने पर सादा पाठ प्रतिक्रियाएं देख रहे हैं।

यदि यह सही है, तो आपका ब्राउज़र संभवतः एक शीर्षलेख भेज रहा है - शायद Accept - जो अमेज़ॅन को प्रतिक्रिया प्रारूप को बदलने का कारण बनता है। अपने cURL सेटअप करने के लिए निम्नलिखित जोड़ने का प्रयास करें:

curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Accept: application/xml' ]); 

इसके बजाय application/xml की आप भी application/json कोशिश कर सकते हैं, लेकिन फिर से प्रलेखन के आधार पर मुझे उम्मीद है कि काम करेंगे नहीं हूँ।

यदि Accept हेडर जोड़ना काम नहीं करता है, ब्राउज़र अनुरोध के शीर्षकों का निरीक्षण करें और अपने कर्ल सेटअप में प्रासंगिक सभी को दोहराएं। विशेष रूप से, ध्यान दें कि अमेज़ॅन MWS documents that you should send a User-Agent header, लेकिन यह मुझे आश्चर्यचकित करेगा अगर वह लौटा प्रारूप बदलता है।

0

अमेज़न मेगावाट बिजली प्रलेखन को देखते हुए वे दावा करते हैं:

in response to a HTTP request, Amazon MWS returns an XML file that contains the results of the request. If a request is successful, the response is returned with the data requested. (source)।

मुझे लगता है कि आपके मामले में आपको स्ट्रिंग प्राप्त करने का कारण यह है कि आप curl के माध्यम से अपना अनुरोध भेज रहे हैं। आप जोड़ने का प्रयास कर सकते हैं:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'); 

आपके कर्ल अनुरोध पर और देखें कि क्या समस्या हल हो रही है या नहीं। अधिक जानकारी के लिए this answer पर एक नज़र डालें।

संबंधित मुद्दे

 संबंधित मुद्दे