php soap 客户端在身份验证正常时获取服务器 java.lang.NullPointerException



如果要将对象发送到Web方法以将其用作prameter: 示例:发送一个对象,该对象将在服务器中表示为类,如下所示:

   $creditCard = new stdClass();
   $creditCard->number="705";
   $creditCard->expiryDate="03/10/2019";
   $creditCard->controlNumber=9;
   $param = array("creditCard" => $creditCard);
   $Response = $client->__soapCall('valider', array($param)); 

你不会得到服务器中CreditCard类的任何属性来工作,每次你执行creditClass.getNumber((或尝试使用访问器时,你都会得到一个空指针错误,因为你的对象没有真正创建。

要解决此问题,您必须修改服务器 Web 服务而不是客户端:您必须添加简单的 JAX-WS 注释@webParam:

  public String valider(@WebParam(name = "creditCard")CreditCard creditCard){ ... }

你的PHP soap客户端代码非常简单:(如果你想要更高的安全性,你必须对你的凭据进行编码或使用其他方式进行身份验证,如摘要式身份验证或其他jax ws安全实现(

   try { 
      $opts = array (
        'http' => [
        'header' => "username: myrealnamern".
                   'password: pass1myrealpassword'] 
        );
      $par= array(
            'trace' => 1,
              'exceptions' =>0,
             'soap_version'   => SOAP_1_1,
             'connection_timeout' => 1800,
             'stream_context' => stream_context_create($opts),
               );
      $client = new SoapClient($wsdl,$par);
     //...... and call your service method as you do 

相关内容

  • 没有找到相关文章

最新更新