2

这是我的代码:

<?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] C:\xampplite\htdocs\OOP\newfile.php:25 中缺少 SOA 操作名称标头 堆栈跟踪:#0 C:\xampplite\htdocs\OOP\newfile.php( 25): SoapClient->__soapCall('findItemsByKeyw...', Array) #1 {main} 在 C:\xampplite\htdocs\OOP\newfile.php 第 25 行抛出

没有意义,我已经在请求的header中设置了操作名……有谁知道这里有什么问题吗?

4

3 回答 3

1

根据SoapHeader 文档,您需要传递一个命名空间(或至少为 NULL)作为标头构造调用的第一个参数。

于 2010-03-23T10:48:04.930 回答
0

我知道这真的很旧 - 但您需要指定以下 HTTP 标头(不是肥皂标头 - 请注意区别)。

这是一个用于查找服务的示例:

内容类型:SOAP12 X-EBAY-SOA-OPERATION-NAME:findItemsByKeywords X-EBAY-SOA-SECURITY-APPNAME:YOUR-ebay-app-id

于 2012-07-17T21:54:26.033 回答
0

将代码放在 try/catch 和 var_dump() 中你得到的异常。这应该让您更详细地了解问题所在。

于 2010-03-22T22:08:19.113 回答