Почему я не могу отправлять SOAP-запросы в Ebay find API? - PullRequest
2 голосов
/ 23 марта 2010

Это мой код:

<?php
error_reporting(E_ALL);
//new instance of soapClient pointing to Ebay finding api
$client = new SoapClient("http://developer.ebay.com/webservices/finding/latest/FindingService.wsdl");

//attach required parameters to soap message header
$header_arr = array();
$header_arr[] = new SoapHeader("X-EBAY-SOA-MESSAGE-PROTOCOL", "SOAP11");
$header_arr[] = new SoapHeader("X-EBAY-SOA-SERVICE-NAME", "FindingService");
$header_arr[] = new SoapHeader("X-EBAY-SOA-OPERATION-NAME", "findItemsByKeywords");
$header_arr[] = new SoapHeader("X-EBAY-SOA-SERVICE-VERSION", "1.0.0");
$header_arr[] = new SoapHeader("X-EBAY-SOA-GLOBAL-ID", "EBAY-GB");
$header_arr[] = new SoapHeader("X-EBAY-SOA-SECURITY-APPNAME", "REMOVED");
$header_arr[] = new SoapHeader("X-EBAY-SOA-REQUEST-DATA-FORMAT", "XML");
$header_arr[] = new SoapHeader("X-EBAY-SOA-MESSAGE-PROTOCOL", "XML");

$test = $client->__setSoapHeaders($header_arr);

$client->__setLocation("http://svcs.ebay.com/services/search/FindingService/v1"); //endpoint

$FindItemsByKeywordsRequest = array(
    "keywords" => "potter"
);

$result = $client->__soapCall("findItemsByKeywords", $FindItemsByKeywordsRequest);

//print_r($client->__getFunctions());
//print_r($client->__getTypes());
//print_r($result);

И это ошибка, которую я получаю:

Неустранимая ошибка: необработанное исключение SoapFault: [axis2ns2: Server] Отсутствует заголовок имени операции SOA в C: \ xampplite \ htdocs \ OOP \ newfile.php: 25 Трассировка стека: # 0 C: \ xampplite \ htdocs \ OOP \ newfile .php (25): SoapClient -> __ soapCall ('findItemsByKeyw ...', Array) # 1 {main}, брошенный в C: \ xampplite \ htdocs \ OOP \ newfile.php в строке 25

Это не имеет смысла, я уже установил имя операции в заголовке запроса ... Кто-нибудь знает, что здесь не так?

Ответы [ 3 ]

1 голос
/ 23 марта 2010

Согласно документации SoapHeader , вам необходимо передать пространство имен (или, по крайней мере, NULL) в качестве первого параметра вызова построения заголовка.

0 голосов
/ 18 июля 2012

Я знаю, что это ДЕЙСТВИТЕЛЬНО старый - но вам нужно указать следующие HTTP-заголовки (не мыльные заголовки - учтите это различие).

Вот пример, который работает для поиска службы:

ТИП СОДЕРЖАНИЯ: SOAP12 X-EBAY-SOA-OPERATION-NAME: findItemsByKeywords X-EBAY-SOA-SECURITY-APPNAME: YOUR-ebay-app-id

0 голосов
/ 23 марта 2010

Поместите код в try / catch и var_dump () исключение, которое вы получаете. Это должно дать вам более подробную информацию о том, в чем проблема.

...