PHP 呼叫Java WebService
阿新 • • 發佈:2018-11-19
Java開發的Webservice 介面引數熟String型別的 第三方為php呼叫。
-<xsd:element name="EmmResut">
-<xsd:complexType>
-<xsd:sequence>
<xsd:element name="string" type="xsd:string" nillable="true" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
以上是java webservice的部分內容。引數是傳入string型別 其實是json的字串。
PHP中正常呼叫都是使用:
$client = new SoapClient($WSDL_URL);
1、$client->FunctionName($param1,$param2);
2、$client->__soapCall("FunctionName",array($param1,$param2));
3、$client->__soapCall("FunctionName",array("param1"=>$param1,"param2"=>$param2));
但是這樣呼叫 總是返回 空指標異常。
SoapClient正常使用方法
解決方法:
header("Content-type: text/html; charset=utf-8"); $webservice_url = "XXXXXXXXXX/service/IWoCheck?wsdl"; $client = new SoapClient($webservice_url); $time_ago = microtime(true); $param = array('PK_POINTCHECK' =>'1001A110000000B39UV1','PK_POINTCHECK_B' => '1001A110000000B39UV2', 'PK_PCUSER' => 'Y14050801','PK_PCRESULT'=>'001A4100000000LUQBI','PCMEAS_RESULT'=>'webservice'); $json['string']=json_encode($param); print_r($json); try{ $arr = $client->__soapCall('EmmResut', array($json)); }catch(Exception $e){ $arr = $e->getMessage(); } $time_end = microtime(true); echo 'webservice執行時間差為:'.($time_end-$time_ago).'s<br>'; print_r($arr);
指定下引數名稱 因為wsdl中:
<xsd:element name="string" type="xsd:string" nillable="true" minOccurs="0"/>
解決靈感來源於:
PHP呼叫Java Webservice