0

私はSOAPが初めてで、どこかでホストされているWebサービスを呼び出そうとしています。

ユーザーが一意かどうかを確認する「IsUniqueUser」Web サービスを呼び出そうとしています。

以下は、サービスのスキーマです。

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="some service" xmlns:xsd="some xsd" xmlns:xsd1="">
 <soap:Header/>
 <soap:Body>
  <ser:isUniqueUser>
     <!--Optional:-->
     <ser:request>
    <xsd:userName>SomeValidUserName</xsd:userName>
 </ser:request>
 </ser:isUniqueUser>
 </soap:Body>
 </soap:Envelope>

そして、次のコードを使用してphpでこのxerviceを呼び出そうとしています

  $client = new SoapClient('Some.wsdl');

http認証の後、isUniqueUserメソッドを呼び出して、「userName」をパラメーターとして渡しました。

 $unique = $client->__soapCall('isUniqueUser',  array('userName' =>'vish123'));

しかし、何もうまくいかず、次のエラーが発生します

 stdClass Object
 (
[return] => stdClass Object
    (
        [errorCode] => 11ARPMWS1004
        [errorMessage] => null. null
        [status] => Failure
        [uniqueUser] => 
    )

)

私は多くの方法でパラメータを渡そうとしました

    $params = array('UserName' =>$_POST['userName']);
    $unique = $client->__soapCall("isUniqueUser", $params);

また

    $unique = $client->isUniqueUser($params);

また

     $unique = $client->_soapCall('isUniqueUser', array('paramaters'=>$params));

また

       $unique = $client->_soapCall('isUniqueUser', array('request'=>$params));

それでも同じエラーが発生します。この問題についてプロバイダーに連絡したところ、パラメーターを渡す際にコードに問題があるとのことでした。

誰でもこの問題を解決する方法を教えてもらえますか?

ありがとう

4

4 に答える 4

1

あなたのリクエストからわかるのは、「ser:request」の下に xsd:userName ノードがあることです。userName の配列を持つリクエストの配列を作成してみてください。

$params = array('UserName' =>$_POST['userName']);
$paramsrequest = array('request' =>$param);
$unique = $client->__soapCall("isUniqueUser",$paramsrequest);
于 2012-07-30T08:22:37.243 に答える
0

これが役立つかどうかを確認してください:

<?php
    $sClient = new SoapClient('Some.wsdl');
    $wrapper = null;
    $wrapper->isUniqueUser->request->userName = new SoapVar('SomeValidUserName', XSD_STRING);
    $result = $sClient->isUniqueUser($wrapper);
    echo $sClient->__getLastResponse();
?>

また、 soapUIなどの SOAP クライアントを使用して手動で起動しようとしましたか? それは働いていますか?

于 2012-07-26T08:09:01.077 に答える
0

私のプロジェクトの1つでは、これを使用しています:

    $soapClient = new SoapClient($wsdl,$params);
    $reponseclient=$soapClient->authentification($username,$password);
    if($reponseclient->demandeRealisee===false){
         error_log("Couldn't log ".$username);
    }
于 2012-07-26T09:27:22.750 に答える