2013-04-08 207 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