Mar*_*ina 9 php curl amazon-mws
有没有办法以Json或Xml格式而不是普通字符串获取亚马逊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;
}
Run Code Online (Sandbox Code Playgroud)
当$ a显示时,我看到了这个(一个简单的字符串,几乎没有详细说明):
2016-11-21T22:59:59Z StandardOrder 2016-11-17T06:24:44Z 2016-11-17T18:47:54Z 1@marketplace.amazon.it 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 2@marketplace.amazon.it 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 3@marketplace.amazon.it 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 ...
Run Code Online (Sandbox Code Playgroud)
但如果我在浏览器中复制$ request,我看到的是XML格式的响应.
我能怎么做?
响应格式文档建议仅返回 XML 响应。但是,如果我正确理解您的 OP,您会在通过curl 发送时看到纯文本响应,在通过浏览器发送时看到XML 响应。
如果这是正确的,那么您的浏览器可能会发送一个标头(可能Accept),这会导致亚马逊更改响应格式。尝试将以下内容添加到您的 cURL 设置中:
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Accept: application/xml' ]);
Run Code Online (Sandbox Code Playgroud)
相反,application/xml您也可以尝试application/json,但再次根据文档,我不希望这会起作用。
如果添加Accept标头不起作用,请检查浏览器请求的标头并复制 cURL 设置中看似相关的所有内容。特别要注意的是,亚马逊 MWS记录了您应该发送User-Agentheader,但如果这改变了返回的格式,我会感到惊讶。