Heim >php教程 >php手册 >使用PHP的soap扩展, 进行wdsl操作

使用PHP的soap扩展, 进行wdsl操作

WBOY
WBOYOriginal
2016-06-06 19:58:271023Durchsuche

本文是一个使用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 = &#39;http://webservice.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl&#39;;
// 以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 = &#39;http://webservice.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl&#39;;
// 实例化, trace表示要记录发送接收的xml数据
$soap = new SoapClient( $wsdl, array( &#39;trace&#39; => 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 '我要轉成繁體哦, 龍' (length=420)


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