PHP SoapClient“主体必须存在于SOAP信封中”错误

PHP SoapClient“主体必须存在于SOAP信封中”错误,php,exception,soap,wsdl,Php,Exception,Soap,Wsdl,在尝试使用PHP SoapClient进行此服务时,我遇到了一个非常奇怪的问题 我必须设置一个身份验证头。请求正文应为空。我使用的代码如下: $client = new SoapClient("http://bws.neteven.com/NWS/2", array("trace" => 1, "exception" => 1)); $auth = array(//the params are not valid of course 'Method'

在尝试使用PHP SoapClient进行此服务时,我遇到了一个非常奇怪的问题

我必须设置一个身份验证头。请求正文应为空。我使用的代码如下:

    $client = new SoapClient("http://bws.neteven.com/NWS/2", array("trace" => 1, "exception" => 1));
    $auth = array(//the params are not valid of course
        'Method' => 'TestConnection',
        'Login' => 'login',
        'Seed' => 'seed',
        'Stamp' => 'stamp',
        'Signature' => 'signature'
    );
    $client->__setSoapHeaders(new SoapHeader('auth', 'AuthenticationHeader', $auth));
    $client->__soapCall('TestConnection',array(null));
之后,我使用$client->\uu getLastRequest查看请求的最终XML是什么。但是,我可以看到标题和正文参数设置不正确。 $client->\uu getLastRequest输出纯文本,如下所示:

MethodTestConnectionLoginloginSeedseedStampstampSignaturesignature
看起来不像是有效的XML。所以我当然得到SoapFault异常,它的文本体必须存在于SOAP信封中

有人知道为什么头和体不由所需的XML标记包装吗

代码中有问题吗?因为我看到了很多使用相同方法的PHP SoapClient的示例。此外,我尝试了一些测试WSDL服务,在那里有有效的请求和响应

这可能是提供的WSDL模式的问题吗

还是我的服务器配置有问题?我使用PHP5.6.3,启用了PHPSOAP扩展

希望你们能帮助我。如果您有任何想法,我们将不胜感激


谢谢。

我找到的代码示例有一个不同的URL

http://bws.neteven.com/NWS/2 vshttp://ws.neteven.com/NWS

此外,您可以在不使用_soapCall的情况下调用类似的方法,即使它也会执行相同的操作

$result = $client->echo(array("EchoInput" => "ReturnMe"));
var_dump($result->EchoOutput);

$result = $client->TestConnection();
var_dump($result->TestConnectionResult);

当您在浏览器源代码中回显$client->\uuu getLastRequest时,您看到的对我来说是正确的,html输出上用xml元素包装的文本是的,您是对的。非常感谢。XML看起来有效。为什么我没有意识到要这么做?:好吧,只剩下一个主要问题:为什么我得到的是SoapFault异常而不是响应?MethodTestConnectionLoginLogins种子StampStampSignatureSignatureSignatureSignature他们我发现了这个例子是的,它与ws。谢谢你,斯库奇。非常感谢你的帮助。
$result = $client->echo(array("EchoInput" => "ReturnMe"));
var_dump($result->EchoOutput);

$result = $client->TestConnection();
var_dump($result->TestConnectionResult);