tags:

views:

30

answers:

1

Hi folks,

I am new to SOAP and dealing with a web service where it would seem no one has interfaced using PHP previously. They have no example code excepting C# but I do have that. eServices.asmx provides WSDL if that is the correct way to say that.

The error that I am getting is "Server did not recognize the value of HTTP Header SOAPAction:" with that training colon suggesting no value is passed, maybe.

My code looks like this:

$URL = "http://nolaflash.xxx.com/xxxWS/eServices.asmx";

$namespace="http://www.xxx.com/webservices/";

include("SOAP/Client.php");

$soapclient = new SOAP_Client($URL);

$xml_data = // valid XML is here;

$res = $soapclient->UpdateData('usrname','pass',$xml_data);

but I have also tried:

$param = array('usrname','pass',$xml_data);
$res = $soapclient->call('UpdateData',$param, $namespace);

Googling suggests that this error is a namespace issue. The C# code I have has only one namespace reference:

[System.Web.Services.WebServiceBindingAttribute(Name="eServicesSoap", Namespace="http://www.xxx.com/webservices/")]

If I dump $soapclient to the screen prior to the function call I see that it has received data from eServices.asmx.

I am unsure how to go about debugging this and the staffers at the service are unfamiliar with interacting with the service outside their .NET IDE.

Any thoughts? Advice?

TIA

JG

+1  A: 

I usually use getFunctions: http://www.php.net/manual/en/soapclient.getfunctions.php and getLastRequest: http://www.php.net/manual/en/soapclient.getlastrequest.php to help me sort things out. First I look at the function list and WSDL. Sometimes the WSDL and/or server is not setup/configured/coded properly. So this function list may be useless. The WSDL file should be definitive, but alas, lame coders, etc...

So sometimes I have to take a stab in the dark, look at the error, and then look at the last request. With this you can see the actual XML that was produced. Compare that to some working XML examples.

This has proven most helpful when dealing with coders who don't want to write docs. By the way, they should give XML examples - not show how to generate XML using language XYZ. There may be more useful info here: http://php.net/manual/en/book.soap.php

HTH

sims
Thanks for the reply sims! When I call $funcs = $soapclient->__getFunctions();print_r($funcs);I get the same error?SOAP_Fault Object( [error_message_prefix] => [mode] => 1 [level] => 1024 [code] => soap:Client [message] => Server did not recognize the value of HTTP Header SOAPAction: . [userinfo] =>
jerrygarciuh
OK, well, then the problem runs deeper and is more likely a config problem... A search turned up somethings about XML name spaces:http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/
sims
BTW, are you using a WSDL file/URL?
sims
Hi Sims. Thank you again for your help with this. Definitely learned new things. Turned out they had issues in their WSDL file and once those were corrected my calls worked. Much obliged!
jerrygarciuh
Yeah, sometimes it's "the other guys" fault - esp when they are stuck in one technology. Good luck!
sims