PHP SoapClient不适用于我的WebService。基本身份验证问题?

努里·阿克曼(Nuri Akman)

我必须调用需要基本身份验证的Soap WebService。我尝试了带有基本身份验证的SoapUI及其工作方式。可以从浏览器正确加载WSDL页面。没有SSL相关问题。

我正在尝试使用SoapClient进行相同的调用,但无法正常工作。据我了解(在Burp Software的帮助下),身份验证标头不是通过soapClient发送的。

当我遇到这个问题时,我检查了StackOverflow上几乎所有相关的问题,并尝试了他们提出的所有建议。

这是我正在处理的PHP代码:

echo "<pre>";

$WSDL_URL='https://myserver.com/services/?wsdl';

$username='xxx';    
$password='yyy';

$params = array(
    'login' => $username,
    'password' => $password,
    'trace' => 0,
    'exceptions' => 0,
    'location' => $WSDL_URL,
    'uri' => $WSDL_URL
);

$soap = new SoapClient(null, $params);

$RESULT = $soap->serviceTest( 'HELLO' );
echo "<h1>ServiceTEST Result:</h1>";
print_r($RESULT);

这是我的错误:

SoapFault Object
(
    [message:protected] => Client Error
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => /Applications/MAMP/htdocs/soap/test.php
    [line:protected] => 24
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [file] => /Applications/MAMP/htdocs/soap/test.php
                    [line] => 24
                    [function] => __call
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => serviceTest
                            [1] => Array
                                (
                                    [0] => HELLO
                                )
                        )
                )
        )
    [previous:Exception:private] => 
    [faultstring] => Client Error
    [faultcode] => s:Client
)
弗格纳德

我设法在wsdl请求中不包含登录名/密码的情况下获得了服务列表,因此,soapclient正在与此服务器一起使用。

使用登录名和密码时出现500错误,因此在服务器端似乎是一个问题。

这是可以帮助您获得有关肥皂响应的更多详细信息的代码

<?php

$username='xxx'; 
$password='yyy';
$WSDL_URL='https://myserver.com/services/?wsdl';


$params = array(
    // witout params it works at least for the wsdl
    //'login' => $username,
    //'password' => $password
);
try {
    $soap = new SoapClient( $WSDL_URL, $params);


    $RESULT = $soap->__getFunctions();
    print_r($RESULT);
    // uncomment that and you'll have the error
    //$soap->serviceTest('bob');
}
catch (SoapFault $fault) {
    echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})";
}
catch (Exception $e) {
    echo $e->getMessage();
    echo $e->getTraceAsString();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章