前段時間做了一個項目的二次開發,有個功能是需要php調用java實現的webservice接口,並傳遞一些參數給接口,然后按照對方提供的接口說明文檔進行傳參調用,java那邊有接收到請求,但是參數總是為null,部分代碼如下:
1 $client = new SoapClient ($this->webServiceUrl); 2 $client->soap_defencoding = 'utf-8'; 3 $client->xml_encoding = 'utf-8'; 4 $param = $context;//參數拼接xml字符串 5 $result = $client->managementMemberInfo($param);//返回值
不管傳什么類型的數據,對方接收到的都是null。然后各種百度(此處有吐槽:百度真心辣雞。),百度出來各種亂七八糟的答案,各種嘗試,然后繼續各種失敗。T@T。。。。后面看到一篇文章,說要添加鍵值,然后嘗試了一下:
1 $client = new SoapClient ($this->webServiceUrl); 2 $client->soap_defencoding = 'utf-8'; 3 $client->xml_encoding = 'utf-8'; 4 $param = array('context'=> $context);//參數拼接xml字符串 5 $result = $client->managementMemberInfo($param);//返回值
然后,依然是悲劇。。。。。。繼續百度,必應。。。然后又看到一篇說要添加鍵值,鍵名為arg0這種,如果有多個應該是一次類推arg1,arg2等等,好吧,本來自己覺得跟前面加鍵值沒啥區別,但還是試了一下:
1 $client = new SoapClient ($this->webServiceUrl); 2 $client->soap_defencoding = 'utf-8'; 3 $client->xml_encoding = 'utf-8'; 4 $param = array('arg0'=>$context);//參數拼接xml字符串 5 $result = $client->managementMemberInfo($param);//返回值
然后,對方說接收到數據了。。。。。。
特此記錄一下。ps:對於為什么一定是arg0不太明白,如果有明白的,希望給小白指點一下,謝謝。
