ホームページ >バックエンド開発 >PHPチュートリアル >SOAP Webサービス通信の問題
$client = new SoapClient($wsdl_url,["trace"=>true,'encoding'=>'UTF-8','soap_version'=>SOAP_1_2,'uri'=>'http:// ws.apache.org/axis2']);
print_r($client->__getFunctions());
$xml=0292f26bb5e8c205b40b12736b9bccd1
58613a913f649e803df57c76e6a932e4
590044628d060beb6e48d3862b42ba66
29cc901cdac01f29308fafbb5bbc7e0bSLDQe2b65bb94a283111fcabb18da5f9dd50
6f93333cf268777065e7e0722a54a4b0
227f4547dda44a008fa642be577b67fe
XML;
主にここ: 配列を使用するだけエラー
$client->__soapCall('getDepartInfo',$xml);
致命的なエラー: SoapFault 例外をキャッチできませんでした: [HTTP]
でホストに接続できませんでした
wsdl が発行されるまで待機してください
http://www.foxwho.com/wsdl.txt
このアドレスを確認してください
struct getDepartInfo { string strXml;}から、
$client->__soapCall('getDepartInfo', array('strXml' => $xml));を次のように呼び出す必要があることがわかりますthis
struct getDepartInfo { string strXml;}から、この
$client->__soapCall('getDepartInfo', array('strXml' => $xml));
のように呼び出す必要があることがわかります。
报错
930406f08da8ee4a2ff134b688d29d1d
809680c31360f4198fd1ab9e85397212a9d9eaf46053e1c34ac3858cf708f4c98afc0fa4351ee5be0f8f199ab4f9800fd41d02eda66c8bc111705f0cab386cc5b419eb28507b28240da1b377e1f7193c
0c6dc11e160d3b678d68754cc175188a
0c6dc11e160d3b678d68754cc175188aCould not connect to host
0c6dc11e160d3b678d68754cc175188aSoapFault Object
(
[message:protected] => Could not connect to host
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /www/wwwroot/default/p.php
[line:protected] => 29
[trace:Exception:private] => Array
(
[0] => Array
(
[function] => __doRequest
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => 930406f08da8ee4a2ff134b688d29d1d
809680c31360f4198fd1ab9e85397212a9d9eaf46053e1c34ac3858cf708f4c98afc0fa4351ee5be0f8f199ab4f9800fd41d02eda66c8bc111705f0cab386cc5b419eb28507b28240da1b377e1f7193c
[1] => http://****:80/axis2/services/WS4SZ.WS4SZHttpSoap11Endpoint/
[2] => urn:getDepartInfo
[3] => 1
[4] => 0
)
)
由
struct getDepartInfo { string strXml;}可知,要这样调用
$client->__soapCall('getDepartInfo', array('strXml' => $xml));
Could not connect to host 无法连接到主机
你在 wsdl 中隐去了目标 url ,这就没法帮你了
vs2010 的 wsdl 工具生成的方法是
public string getDepartInfo([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] string strXml) { object[] results = this.Invoke("getDepartInfo", new object[] { strXml}); return ((string)(results[0])); }可知并没有搞错
this.Url = "http://***:80/axis2/services/WS4SZ.WS4SZHttpSoap11Endpoint/";
Could not connect to host 无法连接到主机
你在 wsdl 中隐去了目标 url ,这就没法帮你了
vs2010 的 wsdl 工具生成的方法是
public string getDepartInfo([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)] string strXml) { object[] results = this.Invoke("getDepartInfo", new object[] { strXml}); return ((string)(results[0])); }可知并没有搞错
this.Url = "http://***:80/axis2/services/WS4SZ.WS4SZHttpSoap11Endpoint/";
モデレータ様、ありがとうございます。相手がポートをパブリック IP に変更してからもう一度試してみます。
いつか蘇州に行ったら試してみます。