SoapFault例外:[500]

时间:2013-10-24 09:40:58

标签: php exception soap

我对肥皂都很陌生,我对于我在做什么只有一点点了解。任何解决问题或找到关于什么的描述的尝试都没有结果。我似乎无法摆脱一个持续的唠叨异常:

SoapFault exception: [500] Username required in path\index.php:38<br />
Stack trace:<br />
#0 path\index.php(38): SoapClient->__soapCall('createPlayer', Array)<br />
#1 {main}

wsdl在这里 - http://www.laifacai.com/soap/gameprovider?wsdl

这是我的PHP。

$soap_options = array('trace' => 1, 'exceptions' => 1 );
$client = new SoapClient("http://www.laifacai.com/soap/gameprovider?wsdl", array( 'login' => "user", 'password' => "pass"));

var_dump ($client->__getFunctions ());

if (!class_exists('SoapClient')){

        die ("You haven't installed the PHP-Soap module.");

} else {

    try {

        $res = $client->__soapCall('createPlayer', array('username'=>'mstest1', 'password'=>'12345678')));

    } catch (SOAPFault $f) {

        echo "<pre>" . $f . "</pre>"; 

    }

}

基本上,我想在wsld上使用一些方法来处理。我虽然createPlayer会是最简单的,我可以根据我所学到的东西从那里开始,但我不能说得对,我不知道什么是错的,我找不到它。如果我传递一个空数组或一个完整的数组,总是相同的“用户名需要”,这样做很重要。

编辑:Wsld链接已编辑

1 个答案:

答案 0 :(得分:0)

它说“需要用户名”,所以尝试提供它。目前,您只提供username(请注意较低的上限)。 SOAP区分大小写。

另外,我认为你的

$res = $client->__soapCall('createPlayer',
    array('username'=>'mstest1', 'password'=>'12345678')));

应该是

$SoapCallParameters = array('username'=>'mstest1', 'password'=>'12345678');
$res = $client->__soapCall('createPlayer',
    array('parameters'=>$SoapCallParameters));

根据您的WSDL文档,您应该提供

array(
   'agentid'
   'username'
   'password'
   'currencycode'
   'countrycode'
   'nickname'
   'fname'
   'lname'
)

对于createPlayer,所以只是用户名和密码是不够的。