Heim  >  Artikel  >  Backend-Entwicklung  >  php调用webservice的例子

php调用webservice的例子

WBOY
WBOYOriginal
2016-07-25 08:59:47915Durchsuche
为大家介绍一个php调用webservice的例子,查询QQ用户是否在线,有需要的朋友,可以参考下。

例子,php开发的客户端程序中调用webservice。

<?php
/**
 * php调用webservice
 * web service服务是查询QQ用户是否在线
 * by bbs.it-home.org
*/
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl");
var_dump($client->__getFunctions());
print("<br/>");
var_dump($client->__getTypes());
print("<br/>");

class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);

$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);

echo $arrResult->qqCheckOnlineResult . "<br/>";
} catch (SOAPFault $e) {
print $e;
}
?>

说明: 创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。

调用web service前可以先调用SoapClient的__geunctions()和__getTypes()方法看一下你要调用的web service暴露的方法,参数和数据类型,需要注意的是传入的参数名一定要和soapclient里面定义的一致,否则参数是传不过去的。

需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。如果参数要求是一个结构体,请用类代替,如上面的代码。

问题: 如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xml字符串。 这点大家在实际的应用中,应该多加注意一下。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn