tags:

views:

280

answers:

3

This is my code:

<?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);

?>

And this is the error I receive:

Fatal error: Uncaught SoapFault exception: [axis2ns2:Server] Missing SOA operation name header in C:\xampplite\htdocs\OOP\newfile.php:25 Stack trace: #0 C:\xampplite\htdocs\OOP\newfile.php(25): SoapClient->__soapCall('findItemsByKeyw...', Array) #1 {main} thrown in C:\xampplite\htdocs\OOP\newfile.php on line 25

It doesnt make sense, I have already set the operation name in the header of the request... Does anyone know what is wrong here?

A: 

Place the code in a try/catch and var_dump() the exception you're getting. That should give you more detail as to what is the problem.

Ben Rowe
It does not provide any additional useful info, just: "Missing SOA operation name header" even though I set the operation name header.so frustrating
Jay
+1  A: 

According to the SoapHeader documentation, you need to pass a namespace (or at least NULL) as the first parameter of the header construction call.

Henrik Opel
A: 

Thanks for pointing that out Henrik,I updated the code, however, I still receive the same error: "Missing SOA operation name header"

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("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-MESSAGE-PROTOCOL:", "SOAP12");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-SERVICE-NAME:", "FindingService");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-OPERATION-NAME:", "findItemsByKeywords");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-SERVICE-VERSION:", "1.0.0");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-GLOBAL-ID:", "EBAY-GB");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-SECURITY-APPNAME:", ""); 
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-REQUEST-DATA-FORMAT:", "XML");
$header_arr[] = new SoapHeader("http://www.ebay.com/marketplace/search/v1/services","X-EBAY-SOA-MESSAGE-PROTOCOL:", "XML");

$client->__setSoapHeaders($header_arr); 

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

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

try{
    $result = $client->__soapCall("findItemsByKeywords", $FindItemsByKeywordsRequest);
}
catch (Exception $e) {
    var_dump($e);
}
Jay
Maybe drop the colons from the header names?
Henrik Opel
ah I forgot about that, still same error though
Jay