有没有办法以 Json 或 Xml 格式而不是纯字符串获取 Amazon 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;
}
当显示 $a 时,我看到这个(一个简单的字符串,几乎没有详细说明的可能性):
2016-11-21T22:59:59Z StandardOrder 2016-11-17T06:24:44Z 2016-11-17T18:47:54Z [email protected] /cdn-cgi/l/email-protection 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] /cdn-cgi/l/email-protection 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] /cdn-cgi/l/email-protection 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 ...
但是如果我在浏览器中复制 $request,我看到的是 XML 格式的响应。
我能怎么做?
The 响应格式文档 http://docs.developer.amazonservices.com/en_US/dev_guide/DG_ResponseFormat.html建议仅返回 XML 响应。但是,如果我正确理解您的 OP,您会在通过curl 发送时看到纯文本响应,在通过浏览器发送时看到XML 响应。
如果这是正确的,那么您的浏览器可能会发送标头 - 可能Accept https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation- 这会导致亚马逊更改响应格式。尝试将以下内容添加到您的 cURL 设置中:
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Accept: application/xml' ]);
代替application/xml
你也可以尝试application/json
,但再次根据文档,我不希望它能起作用。
如果添加Accept
header 不起作用,请检查浏览器请求的标头并复制所有与 cURL 设置相关的内容。特别要注意的是,亚马逊 MWS您应该发送的文件User-Agent header http://docs.developer.amazonservices.com/en_US/dev_guide/DG_UserAgentHeader.html,但如果这改变了返回的格式,我会感到惊讶。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)