本文是一个使用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代码, 其中有说明.
<?php $wsdl = 'http://webservice.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl'; // 以wsdl方式, 实例化类. $soap = new SoapClient( $wsdl ); var_dump ( $soap->__getFunctions() ); // 这是此接口可以提供哪些服务, 就是函数定义, 有参数, 有返回值 var_dump( $soap->__getTypes() ); // 这是此接口使用的数据类型.
以下为上面例子的返回值:
函数声明
<strong>array</strong> <em>(size=4)</em> 0 <span>=></span> <small>string</small> <span>'toSimplifiedChineseResponse toSimplifiedChinese(toSimplifiedChinese $parameters)'</span> <em>(length=80)</em> 1 <span>=></span> <small>string</small> <span>'toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)'</span> <em>(length=83)</em> 2 <span>=></span> <small>string</small> <span>'toSimplifiedChineseResponse toSimplifiedChinese(toSimplifiedChinese $parameters)'</span> <em>(length=80)</em> 3 <span>=></span> <small>string</small> <span>'toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)'</span> <em>(length=83)</em>
类型定义
<strong>array</strong> <em>(size=4)</em> 0 <span>=></span> <small>string</small> <span>'struct toSimplifiedChinese { string sText; }'</span> <em>(length=45)</em> 1 <span>=></span> <small>string</small> <span>'struct toSimplifiedChineseResponse { string toSimplifiedChineseResult; }'</span> <em>(length=73)</em> 2 <span>=></span> <small>string</small> <span>'struct toTraditionalChinese { string sText; }'</span> <em>(length=46)</em> 3 <span>=></span> <small>string</small> <span>'struct toTraditionalChineseResponse { string toTraditionalChineseResult; }'</span> <em>(length=75)</em>
从这个输出中, 可以看到,
<span>toTraditionalChineseResponse toTraditionalChinese(toTraditionalChinese $parameters)</span>
这是简体转换为繁体的函数.
参数 toTraditionalChinese
结构为:
<span>struct toTraditionalChinese { string sText; }</span>
对应 于PHP, 就是一个数组, 以sText为键, 值为字符串,
例如: array( 'sText' => '要转成繁体的汉字' )
此函数的返回值为:
<span>struct toTraditionalChineseResponse { string toTraditionalChineseResult; }</span>
这对于PHP就是, 一个stdClass, 有一个叫做toTraditionalChineseResult的属性
下面是一个有完整返回值的PHP代码, 其中包含发送的xml信息和接收的xml信息.
<?php // wsdl地址 $wsdl = 'http://webservice.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl'; // 实例化, trace表示要记录发送接收的xml数据 $soap = new SoapClient( $wsdl, array( 'trace' => true) ); // 直接调用这个函数, 因为在此对象中, 所有的函数都是以双下划线开头, 所以不会有冲突. $rs = $soap->toTraditionalChinese( array( 'sText' => '我要转成繁体哦, 龙' )); // 显示转换以后的值, stdClass对象. var_dump( $rs ); // 显示转换的内容, 字符串 echo $rs->toTraditionalChineseResult; echo '<hr>以下为收发信息'; // 发送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 '