2013-04-08 4 views
0

Я пытаюсь обновить количества, используя действие SubmitFeed. У кого-нибудь есть опыт? Ошибка, которую я получаю: «Требуется параметр« Действие »или« Операционный запрос », но у меня есть« Action = SubmitFeed »в строке запроса.amazon mws submit feed

Я написал еще четыре функции (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

Привет, можете ли вы поделиться всеми своими параметрами, что у вас здесь недостаточно, чтобы помочь. –

+0

Какие параметры? Это все, что у меня было для cURL. Это может помочь другим: найти AMTU. Это гораздо более простой способ подачи фидов. АМТУ работал после нескольких моментов написания кода. – danilo

ответ

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

+0

@debianek True. Я попытался внести минимальные изменения в его код и не заметил там CURLOPT_UPLOAD. Я думаю, что он все равно должен работать, но на самом деле не пытался. – Hazzit