我用PHP调用  为什么一直报Object reference not set to an instance of an object.这个错误
PHP使用SoapClient这个类库直接调用.net的方法,.net中的方法定义了两个参数,一个是实体对象类型的,一个是out类型的,这个我在PHP中调用应该怎么调用呢!

解决方案 »

  1.   

     $this->client = new SoapClient($this->serverUrl);
    $qos = new qosclass();
            $qos->strProcessType = "储值卡";                                         
            $qos->strOperateType='05';                                 //交易类型               
            $qos->strTermNo="";                                   //终端号
            $qos->strStoreNo='';                                    //门店号
            $qos->strPosNo='';                                      //收银机号   
            $qos->strUserNo='';                                   //收银员工编码
            $qos->strUserName="";                            //收银员工姓名  
            $qos->strDepositType="";                         //付款账户名称   
            $qos->strTrack2="CRADN1231313123";                     //磁道     
            $qos->strExtend1=".NET";                                 //扩展字段1  客户端类型是“.NET”
            $qos->strExtend2='';                                     //JSON格式 数据  
            $qos->strExtend3='';                                     //JSON格式 数据  
            $qos->strExtend4='';                                     //JSON格式 数据     
            //echo "<br>";                                           //.net中out类型的值  默认为空                                                                                                                                                                                
            $sErr = "";      
           // $this->client->setClass('qosclass'); 
           $array = array('CCardParameter'=>$qos,$sErr); 
           try{                                         
                $result = $this->client->ProcessCard($array);       
                print_r($result);
            } catch (SOAPFault $e) {
                print_r( $e);
            }
            exit;
      

  2.   

    Server was unable to process request. ---> Object reference not set to an instance of an object. 
    报这个错误,也不知道是什么原因
    ProcessCard这个是.net的方法这是.net那边调用的写法
    用PHP怎么写,上面我贴出了我用PHP写的  但是报错
      

  3.   

    .net 调用时为何只需 4 个参数,你 php 却有那么多?类 qosclass 是如何定义的?
    按约定 $qos 应该是关联数组,类似这样
    $qos = array(
      'strProcessType' => "储值卡",                                         
      'strOperateType' => '05',                                 //交易类型               
      'strTermNo' => "",                                   //终端号
    );
    $array = array('CCardParameter'=>$qos);
    $result = $this->client->ProcessCard($array);
    具体格式应查看 WSDL
      

  4.   

    .net 调用时为何只需 4 个参数,你 php 却有那么多?类 qosclass 是如何定义的?
    按约定 $qos 应该是关联数组,类似这样
    $qos = array(
      'strProcessType' => "储值卡",                                         
      'strOperateType' => '05',                                 //交易类型               
      'strTermNo' => "",                                   //终端号
    );
    $array = array('CCardParameter'=>$qos);
    $result = $this->client->ProcessCard($array);
    具体格式应查看 WSDL
      

  5.   

    这是我定义的类 qosclass 
      

  6.   

    这是类里面的参数    
    被调用的方法只需要两个参数
    一个实体类型和一个out类型我应该怎么传呢
      

  7.   

    out 修饰符是 C# 的,与 php 无关
    php 有自己的传参方式还是那句话:具体格式应查看 WSDL
      

  8.   

    url?wsdl