2013-04-08 135 views
0

我正在尝试使用SubmitFeed操作更新数量。有人对此有经验吗?我收到的错误是:'Action或Operation查询参数必须存在',但我在查询字符串中有'Action = SubmitFeed'。亚马逊mws提交订阅

我已经写了四个其他函数(RequestReport,GetReportRequestList,GetReport,& GetFeedSubmissionList),它可以很好地工作。我想我缺少一些cURL配置选项以发布文件。

卷曲选项:

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HTTPHEADER => array(
    'Content-Type: application/x-www-form-urlencoded', 
    'Content-MD5: '. $md5, 
    'Transfer-Encoding: chunked', 
)), 
curl_setopt($ch, CURLINFO_HEADER_OUT => true); 
curl_setopt($ch, CURLOPT_UPLOAD => true); 
curl_setopt($ch, CURLOPT_PROTOCOLS => CURLPROTO_HTTPS); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_PORT , 443); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $url_parts)); 

任何人都可以帮助?谢谢。

+0

嗨,你可以请分享你所有的参数,你在这里没有足够的帮助。 – 2013-04-10 11:01:32

+0

什么参数?这些都是我用来卷曲的。这可能对其他人有帮助:查找AMTU。这是一种更简单的提交Feed的方法。 AMTU在编写代码片刻后工作。 – danilo 2013-04-18 20:51:51

回答

0

为了完成SubmitFeed调用,您必须使用Content-Type: text/xml并将您的XML提要用作CURLOPT_POSTFIELDS。您的其他选项字段将要进入的URL,仿佛这是一个GET

$ch = curl_init($url_with_fields);     <-- change 1 
curl_setopt($ch, CURLOPT_HTTPHEADER => array(
    'Content-Type: text/xml',      <-- change 2 
    'Content-MD5: '. $md5, 
    'Transfer-Encoding: chunked', 
)), 
curl_setopt($ch, CURLINFO_HEADER_OUT => true); 
curl_setopt($ch, CURLOPT_UPLOAD => true); 
curl_setopt($ch, CURLOPT_PROTOCOLS => CURLPROTO_HTTPS); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_PORT , 443); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);  <-- change 3 

注意,这种类型的呼叫作品RequestReport,GetReportRequestList,GetReport,& GetFeedSubmissionList的:见好就收$ XMLDATA在这些情况下是空的。

+0

您不需要设置CURLOPT_UPLOAD,因为它将方法更改为PUT。所有你需要的是POST – debianek 2013-06-07 08:51:32

+0

@debianek真。我试图对他的代码做最小的修改,并没有注意到那里的CURLOPT_UPLOAD。我认为它应该仍然有效,但是还没有真正尝试过。 – Hazzit 2013-06-07 13:02:49