使用PHP的soap扩展, 进行wdsl操作
本文是一个使用php soap访问webservice的例子. wsdl文件请见http://www.webxml.com.cn/这个网站. 里面有很多好用的服务器. 大部分可以免费使用, 有一部分要收费. 以中文简繁转换为例. 简繁转换的wsdl文件地址为:http://webservice.webxml.com.cn/WebServices
本文是一个使用php soap访问webservice的例子.
wsdl文件请见http://www.webxml.com.cn/ 这个网站. 里面有很多好用的服务器.
大部分可以免费使用, 有一部分要收费.
以中文简繁转换为例.
简繁转换的wsdl文件地址为: http://webservice.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
下面是PHP代码, 其中有说明.
__getFunctions() ); // 这是此接口可以提供哪些服务, 就是函数定义, 有参数, 有返回值 var_dump( $soap->__getTypes() ); // 这是此接口使用的数据类型.
以下为上面例子的返回值:
函数声明
array (size=4) 0 => string 'toSimplifiedChineseResponse toSimplifiedChinese(toSimplifiedChinese $parameters)' (length=80) 1 => string 'toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)' (length=83) 2 => string 'toSimplifiedChineseResponse toSimplifiedChinese(toSimplifiedChinese $parameters)' (length=80) 3 => string 'toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)' (length=83)
类型定义
array (size=4) 0 => string 'struct toSimplifiedChinese { string sText; }' (length=45) 1 => string 'struct toSimplifiedChineseResponse { string toSimplifiedChineseResult; }' (length=73) 2 => string 'struct toTraditionalChinese { string sText; }' (length=46) 3 => string 'struct toTraditionalChineseResponse { string toTraditionalChineseResult; }' (length=75)
从这个输出中, 可以看到,
toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)
这是简体转换为繁体的函数.
参数 toTraditionalChinese
结构为:
struct toTraditionalChinese {
string sText;
}
对应 于PHP, 就是一个数组, 以sText为键, 值为字符串,
例如: array( 'sText' => '要转成繁体的汉字' )
此函数的返回值为:
struct toTraditionalChineseResponse {
string toTraditionalChineseResult;
}
这对于PHP就是, 一个stdClass, 有一个叫做toTraditionalChineseResult的属性
下面是一个有完整返回值的PHP代码, 其中包含发送的xml信息和接收的xml信息.
true) ); // 直接调用这个函数, 因为在此对象中, 所有的函数都是以双下划线开头, 所以不会有冲突. $rs = $soap->toTraditionalChinese( array( 'sText' => '我要转成繁体哦, 龙' )); // 显示转换以后的值, stdClass对象. var_dump( $rs ); // 显示转换的内容, 字符串 echo $rs->toTraditionalChineseResult; echo '
以下为收发信息'; // 发送HTTP头 var_dump( $soap->__getLastRequestHeaders() ); // 发送的HTTP_BODY var_dump( $soap->__getLastRequest() ); // 接收的HTTP头 var_dump( $soap->__getLastResponseHeaders() ); // 接收的HTTP_BODY var_dump( $soap->__getLastResponse() );
以下是上面这个例子的返回值:
object(stdClass)[2]
public 'toTraditionalChineseResult' => string '我要轉成繁體哦, 龍' (length=26)
我要轉成繁體哦, 龍
以下为收发信息
string 'POST /WebServices/TraditionalSimplifiedWebService.asmx HTTP/1.1
Host: webservice.webxml.com.cn
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.13
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://webxml.com.cn/toTraditionalChinese"
Content-Length: 305
' (length=269)
string '
' (length=305)
string 'HTTP/1.1 200 OK
Date: Thu, 17 Jul 2014 08:55:43 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 420
' (length=228)
string '