php5调用web service+++

合集下载

vbnet调用webservice的方法

vbnet调用webservice的方法

调用Web Service的方法1. 简介是一种面向对象的编程语言,用于开发Windows应用程序和Web应用程序。

通过,我们可以轻松地调用Web Service,实现与远程服务器进行通信并获取数据的功能。

本文将详细介绍如何在中调用Web Service的方法。

2. 准备工作在开始之前,我们需要确保以下几点:•安装Visual Studio:确保已安装最新版本的Visual Studio开发环境。

•Web Service URL:获得要调用的Web Service的URL地址。

3. 创建项目首先,我们需要创建一个新的项目。

按照以下步骤进行操作:1.打开Visual Studio,并选择“创建新项目”。

2.在“新建项目”对话框中,选择“Visual Basic”和“Windows桌面”。

3.选择“Windows桌面应用程序”模板,并为项目命名。

4.单击“确定”按钮创建项目。

4. 添加Web Service引用在项目中调用Web Service之前,我们需要添加对Web Service的引用。

按照以下步骤进行操作:1.在“解决方案资源管理器”窗口中,右键单击项目,然后选择“添加”->“服务引用”。

2.在“服务引用”对话框中,单击“高级”按钮。

3.在“高级设置”对话框中,单击“添加Web引用”按钮。

4.在“添加引用”对话框中,输入Web Service的URL地址,然后单击“添加引用”按钮。

5.等待一段时间,直到引用被成功添加到项目中。

5. 调用Web Service方法一旦Web Service引用被添加到项目中,我们就可以开始调用WebService的方法了。

按照以下步骤进行操作:1.在代码中,实例化Web Service的代理类。

代理类的名称通常以“服务名称+SoapClient”结尾。

Dim service As New WebServiceName.WebServiceNameSoapClient()2.调用Web Service的方法,使用代理类的实例。

四种方式调用webservice

四种方式调用webservice

四种客户端调用WEBSERVICE 王凡Woshiwangfan@Wf141732@2009-08-22目录1.文档概述 (2)1.1.相关文档 (2)2.SERVER端 (3)2.1.代码 (3)2.2.SERVER端生成Wsdl (4)2.3.服务端安全性设置 (6)3.VB调用 (13)3.1.准备 (13)调用 (16)4.1.实现过程 (16)5.Axis2调用 (17)5.1.Axis2的安装 (17)5.2.Axis2调用过程 (17)6.Weblogic调用 (21)6.1.Weblogic (21)7.已解决及未解决的问题 ........................................................... 错误!未定义书签。

7.1.未解决的问题.................................................................... 错误!未定义书签。

7.2.已解决的问题.................................................................... 错误!未定义书签。

1.文档概述1.1.相关文档《Web Services开发教程.doc》2.SERVER端这个主要是用weblogic的workshop开发,用weblogic开发webservice具体可见沈辉的《Web Services开发教程.doc》,这里主要是讲客户端调用,所以服务端只作罗列。

2.1.代码在weblogic中构建webservice可以见《Web Services开发教程.doc》,用于本次测试的Server代码如下:Model:package .tsingtao.logistics.model;import java.io.Serializable;public class test implements Serializable {private static final long serialVersionUID = 1L;private String NAME;private int AGE;public void setNAME(String name){NAME=name;}public void setAGE(int age){AGE=age;}public String getNAME(){return NAME;}public int getAGE(){return AGE;}}Service代码如下:public .tsingtao.logistics.model.test[] hello(String NAME,int AGE) {.tsingtao.logistics.model.test[] t=new.tsingtao.logistics.model.test[10];for(int i=0;i<10;i++){t[i] = new .tsingtao.logistics.model.test();t[i].setNAME(NAME+i);t[i].setAGE(AGE+i);}return t;}2.2.SERVER端生成Wsdl在Server端生成的wsd如下:<?xml version='1.0' encoding='UTF-8'?><s0:definitions name="testServiceDefinitions"targetNamespace="http://cn/com/tsingtao/logistics/service" xmlns=""xmlns:s0="/wsdl/"xmlns:s1="http://cn/com/tsingtao/logistics/service"xmlns:s2="/wsdl/soap/"><s0:types><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"targetNamespace="java:.tsingtao.logistics.model"xmlns:s0="/wsdl/"xmlns:s1="http://cn/com/tsingtao/logistics/service"xmlns:s2="/wsdl/soap/"xmlns:xs="/2001/XMLSchema"><xs:complexType name="test"><xs:sequence><xs:element minOccurs="1" name="AGE" nillable="false" type="xs:int"/><xs:element minOccurs="1" name="NAME" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:complexType name="ArrayOftest_literal"><xs:sequence><xs:element maxOccurs="unbounded" minOccurs="0" name="test"nillable="true" type="java:test" xmlns:java="java:.tsingtao.logistics.model"/></xs:sequence></xs:complexType><xs:element name="ArrayOftest_literal" type="java:ArrayOftest_literal"xmlns:java="java:.tsingtao.logistics.model"/></xs:schema><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://cn/com/tsingtao/logistics/service"xmlns:s0="/wsdl/"xmlns:s1="http://cn/com/tsingtao/logistics/service"xmlns:s2="/wsdl/soap/"xmlns:xs="/2001/XMLSchema"><xs:import namespace="java:.tsingtao.logistics.model"/><xs:element name="hello"><xs:complexType><xs:sequence><xs:element name="NAME" type="xs:string"/><xs:element name="AGE" type="xs:int"/></xs:sequence></xs:complexType></xs:element><xs:element name="helloResponse"><xs:complexType><xs:sequence><xs:element name="return" type="java:ArrayOftest_literal"xmlns:java="java:.tsingtao.logistics.model"/></xs:sequence></xs:complexType></xs:element></xs:schema></s0:types><s0:message name="hello"><s0:part element="s1:hello" name="parameters"/></s0:message><s0:message name="helloResponse"><s0:part element="s1:helloResponse" name="parameters"/></s0:message><s0:portType name="test"><s0:operation name="hello" parameterOrder="parameters"><s0:input message="s1:hello"/><s0:output message="s1:helloResponse"/></s0:operation></s0:portType><s0:binding name="testServiceSoapBinding" type="s1:test"><s2:binding style="document"transport="/soap/http"/><s0:operation name="hello"><s2:operation style="document"/><s0:input><s2:body parts="parameters" use="literal"/></s0:input><s0:output><s2:body parts="parameters" use="literal"/></s0:output></s0:operation></s0:binding><s0:service name="testService"><s0:port binding="s1:testServiceSoapBinding" name="testSoapPort"><s2:address location="http://localhost:7001/BSM/test"/></s0:port></s0:service></s0:definitions>2.3.服务端安全性设置这个是根据沈辉的《Web Services开发教程.doc》设置的,不作详细说明,只作罗列2.3.1.在weblogic中新建用户和用户组2.3.2.在webapp中配置安全性在web-info\web.xml中添加红色部分<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"><display-name>BSM</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><security-role><role-name>wsuser</role-name></security-role><security-constraint><web-resource-collection><web-resource-name>Secure Area</web-resource-name><url-pattern>/*</url-pattern><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>wsuser</role-name></auth-constraint></security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>myrealm</realm-name></login-config></web-app>在web-info\weblogic.xml中添加红色部分<?xml version="1.0" encoding="UTF-8"?><wls:weblogic-web-appxmlns:wls="/ns/weblogic/weblogic-web-app"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd/ns/weblogic/weblogic-web-app/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"><wls:weblogic-version>10.3</wls:weblogic-version><wls:context-root>BSM</wls:context-root><security-role-assignment><role-name>wsuser</role-name><principal-name>wsgroup</principal-name></security-role-assignment></wls:weblogic-web-app>重新发布后在浏览器中就可以看到了3.VB调用3.1.准备使用vb6.0调用webservice需要用到SOAP Toolkit,我们选用的是SOAP Toolkit3.0版本。

php 调用方法

php 调用方法

php 调用方法PHP 调用方法。

PHP是一种广泛应用于Web开发的脚本语言,它的灵活性和强大功能使得它成为了许多网站和应用程序的首选开发语言。

在PHP 中,我们经常需要调用各种方法来实现特定的功能,本文将介绍PHP中常见的调用方法,帮助大家更好地理解和运用PHP语言。

1. 函数调用。

在PHP中,函数是一种封装了一系列语句的代码块,可以重复使用。

我们可以通过函数名来调用函数,从而执行其中的代码。

例如,我们定义了一个名为"hello"的函数:```php。

function hello(){。

echo "Hello, world!";}。

```。

要调用这个函数,我们只需要简单地写下函数名即可:```php。

hello();```。

这样就会输出"Hello, world!"。

这种调用方法非常简单直观,是PHP中最常见的调用方式之一。

2. 类方法调用。

在PHP中,我们可以使用面向对象的方式来进行编程,这就涉及到了类和对象的概念。

在类中,我们可以定义各种方法来实现特定的功能,然后通过实例化对象来调用这些方法。

例如,我们定义了一个名为"Car"的类,其中包含一个名为"start"的方法:```php。

class Car {。

public function start(){。

echo "The car is started!";}。

}。

$myCar = new Car();$myCar->start();```。

通过实例化Car类并调用start方法,我们就可以输出"The car is started!"。

这种调用方法是面向对象编程中非常常见的一种方式。

3. 动态方法调用。

除了直接调用函数和类方法外,PHP还提供了动态方法调用的方式。

这种调用方法可以在运行时动态地确定要调用的方法。

webservice接口调用方法

webservice接口调用方法

webservice接口调用方法Web服务(Web service)是指一个网络服务,通过互联网进行通信的应用程序接口(API),使用标准的HTTP协议进行数据传输和交互。

它使用SOAP(Simple Object Access Protocol)来封装数据,以XML格式进行传递,可以在多种平台上进行调用,独立于编程语言和操作系统。

调用Web服务的方法如下:1.确定服务地址和方法:首先要确定要调用的Web服务的地址和要调用的方法。

通常,服务地址是一个URL(Uniform Resource Locator),可以在文档中找到。

2.创建SOAP请求:根据要调用的方法创建一个SOAP请求。

SOAP 请求是一个XML文档,根据服务的定义,包含要调用的方法名和方法参数。

可以使用各种编程语言和工具来创建SOAP请求,如Java的JAX-WS、Python的suds等。

3.发送请求:将创建的SOAP请求发送给Web服务。

可以使用HTTP POST或其他协议将请求发送给服务的URL。

请求与服务之间的通信是通过HTTP协议完成的。

4.解析响应:接收到Web服务的响应后,需要解析响应的内容。

响应是一个XML文档,包含服务返回的数据。

同样,可以使用各种编程语言和工具来解析XML响应,提取所需的数据。

5.处理响应:根据需要处理响应的数据。

可以将数据保存到数据库中,显示在用户界面上,或者进行其他操作。

6.处理错误:如果在调用Web服务时发生错误,需要处理错误。

可能会遇到网络连接问题、服务不可用、权限问题等。

根据错误类型,可以采取不同的处理方式,如重试请求、记录错误信息等。

7.错误处理:同样重要的是处理错误。

如果在调用Web服务时发生错误,需要处理错误。

可能会遇到网络连接问题、服务不可用、权限问题等。

根据错误类型,可以采取不同的处理方式,如重试请求、记录错误信息等。

8.安全性:在调用Web服务时,需要确保数据的安全性。

可以使用加密和数字签名等技术来保护传输的数据。

webservice接口文档

webservice接口文档

WebService接口文档文档版本号:v9.9.5更新时间:2016年09月28日重要说明本人/本公司在使用本软件过程中,将严格遵守国家相关法律、法规、保证本公司信息发布的安全,并切实做到:(1)建立健全本公司信息发布的内部保障制度、信息安全保密制度、用户信息安全管理制度,建立健全本公司信息安全责任制度和信息发布的审批制度,严格审查本公司产品所发布信息。

(2)严格遵守《互联网信息服务管理办法》,对用户编辑的信息内容进行把关,保证信息内容的健康、合法。

(3)明确本企业的客户群和客户范围,所有通讯受众必须是自愿且明确同意接受企业服务。

(4)若发送未经用户允许的信息等所造成的影响、投诉等一切损失与本软件版权方无关、由本人/本公司承担全部责任;同时,本人/本公司也应承担若因此给本软件版权方造成的全部损失。

(5)不利用本软件制作、复制、发布、传播含有下列内容的信息:✧反对宪法所确定的基本原则的;✧危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;✧损坏国家荣誉和利益的;✧煽动民族仇恨、民族歧视,破坏民族团结的;✧破坏国家民族宗教政策,宣扬邪教和封建迷信的;✧散布谣言,扰乱社会秩序,破坏社会稳定的;✧散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;✧侮辱或者诽谤他人,侵害他人合法权益的;✧含有法律、行政法规禁止的其他内容的;(6)自信息发布六个月内不修改删除信息发送日志内容,日志记录的备份应至少保持6个月以上,在国家机关进行依法查询时,予以提供。

(7)若发现本公司所发布的信息明显属于上述第(5)款所列内容,保证立即停止传输,并向国家有关机关报告。

(8)对本公司所发布的信息一时难以辨别是否属于以上所列内容之一的,应报相关主管部门审核同意后再发布。

(9)对客户的个人信息保密,未经客户同意不得向他人泄漏,但法律规定的除外。

本人/本公司保证:在使用本软件进行信息发布活动中,服从监督和管理;若未做到上述一至八条,本人/本公司愿意承担由此引起的一切法律责任,并接受相应的处罚。

php中创建和调用webservice接口示例

php中创建和调用webservice接口示例

这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识、webservice服务端例子、webservice客户端例子,需要的朋友可以参考下作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice。

简单说, webservice就是一些站点开放一些服务出来, 也可以是你自己开发的service, 也就是一些方法, 通过url,指定某一个方法名,发出请求,站点里的这个服务(方法),接到你的请求,根据传过来的参数,做一些处理,然后把处理后的结果以xml形式返回来给你,你的程序就解析这些xml数据,然后显示出来或做其它操作。

写webservice需要了解:基础的web services 平台是xml + http;另外web services 平台的元素:soap (简易对象访问协议),uddi (通用描述、发现及整合),wsdl (web services 描述语言);任何webservice都包括客户端和服务端。

下面以实例讲解如何用php写webservice接口让别人调用:首先需要建一个.wsdl文件,那么php如何建这个文件呢。

有两种方式可以实现,一种是直接用zend studio工具生成;另一种就是php根据soapdiscovery.class.php自动生成wsdl 文件;具体哪一种根据自己情况选择,我一般用的是前者这样比较快速。

下面写一下用类如何生成wsdl文件,首先需要上网上下载那个类文件,然后引入类文件后,看如下代码:creat_wsdl.php代码如下:include_once('service.php');include_once('soapdiscovery.class.php');$wsdl=new soapdiscovery('service','soap');//第一参数为类名,也是生成wsdl的文件名service.wsdl,第二个参数是服务的名字可以随便写$wsdl-&gt;getwsdl();?&gt;这样运行creat_wsdl.php文件就可以生成wsdl文件了。

PHP基础教程_Web Service

PHP基础教程_Web Service

SOAP 消息的基本结构
<?xml version="1.0"?> <soap:Envelope xmlns:soap="/2001/12/soap-envelope" soap:encodingStyle="/2001/12/soap-encoding">
什么是UDDI?
UDDI是一种目录服务,通过它,企业可注册并 搜索Web services。
UDDI指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。
UDDI是一种用于存储有关web services的信息的 目录。
在SoapServer类的众多方法中,有三个方法比较重要。
SoapServer::setClass()方法设定用来实现Web Service的类。 SoapServer::setClass所设定的类中的所有公共方法将成为Web Services的操作
SoapServer::addFunction()方法用来添加一个或多个作为Web Services操作的函数。
SOAP指简易对象访问协议或者可以更简单地说:SOAP是一种用于 访问web service的协议。
SOAP是一种通信协议 SOAP用于应用程序之间的通信 SOAP是一种用于发送消息的格式 SOAP被设计用来通过因特网进行通信 SOAP独立于平台 SOAP独立于语言 SOAP基于XML SOAP很简单并可扩展 SOAP运许您绕过防火墙 SOAP将被作为W3C标准来发展
SoapServer:: handle()方法指示Web Service脚本开始处理进入的请求。 Web Service脚本是用PHP脚本写的一个或多个SoapServer对象的实例。 尽管你可以有不止一个的SoapServer对象,但通常的习惯是一个脚本只 拥有一个SoapServer实例。在调用SoapServer::handle()方法之前, Web Service脚本会使用设置在SoapServer对象实例上的任何信息来处 理进入的请求和输出的相应。

webservice 接口调用规则

webservice 接口调用规则

Web服务接口调用规则是用于规范和描述如何与Web应用程序交互的一组协议和规范。

这些规则通常包括以下方面:1. URL:Web服务接口的统一资源定位符(URL)用于标识接口的位置。

通常,URL 遵循这样的格式:`scheme://hostname[:port]/path`。

其中,scheme表示协议(如http或https),hostname表示服务器的主机名,port表示服务器的端口号,path表示接口的路径。

2. 请求方法:Web服务接口通常支持多种HTTP请求方法,如GET、POST、PUT、DELETE等。

这些方法用于指定对资源的操作类型。

3. 请求参数:请求参数是传递给Web服务接口的数据。

它们可以包含在URL中(对于GET方法)或在请求体中(对于POST、PUT和DELETE方法)。

参数通常采用键值对的形式,其中键表示参数名,值表示参数值。

4. 请求头:请求头包含在HTTP请求中,用于传递有关请求的其他信息,如内容类型、编码格式、认证信息等。

5. 请求体:请求体是用于传递具体数据的HTTP请求部分。

它通常包含在POST、PUT 和DELETE请求中。

请求体可以采用不同的格式,如JSON、XML或表单数据。

6. 响应状态码:Web服务接口返回的HTTP响应状态码用于表示请求的结果。

状态码通常是一个三位数,其中,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误。

7. 响应头:响应头包含在HTTP响应中,用于传递有关响应的其他信息,如内容类型、编码格式、认证信息等。

8. 响应体:响应体是用于传递具体数据的HTTP响应部分。

它通常包含在2xx状态码的响应中。

响应体可以采用不同的格式,如JSON、XML或HTML。

9. 认证和授权:Web服务接口可能需要进行认证和授权,以确保只有具有相应权限的用户才能访问。

这通常通过在请求头中传递认证凭据(如用户名和密码)或使用令牌(如JWT)来实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

php5调用web service工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经包含了处理soap的模块,但是资料太少了,上php官网上查帮助,写的不是很容易理解,经过多次实践,终于搞清楚了,php调用web service还是非常简单的。

下面用一个例子说明:extension=php_openssl.dllextension=php_soap.dllphp.ini 这2项要开通web service服务是一个用java写的简单服务,环境为Tomcat6.0 + Axis2,暴露的方法为String hello(String name)传递一个String参数name,然后返回给客户端。

使用php5开发客户端:<?phpheader("content-type:text/html;charset=utf-8");try {//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));$client = new SoapClient("http://localhost:8080/axis2/services/HelloService?wsdl",array('encoding'=>'UTF-8'));var_dump($client->__getFunctions());print("<br/>");var_dump($client->__getTypes());print("<br/>");$parm1 = "php client call";$param = array('param0' => $parm1);$arr = $client->hello($param);print_r($arr);} catch (SOAPFault $e) {print $e;}?>代码确实很简单吧,创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array 数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。

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

(本人在这个上面延误了很长时间c#调用不用指定参数名,真奇怪啊)不知道WSDL的情况也可以调用WS,需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。

另外发现个问题,如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xm l字符串.有个叫Nusoap类,在php4下比较流行。

但是淡水这次玩的是php5,所以他就没戏了。

先恶补一下相关知识。

先要打开php5的web service扩展。

linux下,嗯,好像不会-_-!。

windows下,把php.ini文件中extension=php_soap.dll 去掉注释即可。

方法:SoapClient->__soapCall()说明:class SoapClient {mixed __soapCall ( string function_name, array arguments [, array options [, mixed input_headers [, array &output_headers]]])}In WSDL mode, you can simply call SOAP functions as SoapClient methods. This method useful in non-WSDL mode when soapaction is unknown, uri differs from the default or when sending and/or receiving SOAP He aders返回值:一个简单类型的返回值,或是一个关联数组例子:<?php$client = new SoapClient("some.wsdl");$client->SomeFunction($a, $b, $c);$client->__soapCall("SomeFunction",array($a, $b, $c));$client->__soapCall("SomeFunction",array($a, $b, $c),NULL,new SoapHeader(),$output_headers);$client = new SoapClient(null, array('location' =>"http://localhost/soap.php",'uri'=> "http://test-uri/"));$client->SomeFunction($a, $b, $c);$client->__soapCall("SomeFunction",array($a, $b, $c));$client->__soapCall("SomeFunction",array($a, $b, $c),array('soapaction' => 'some_action','uri' => 'some_uri'));?>1.in WSDL modesoapCall应用web service,例子用的是的web service,提供service.asmx页面,调用及查看都比较简单,手册上的example也大多是这个类型,比较简单.SOAP发送的协议:POST /servicepath/service.asmx HTTP/1.1Host: 211.186.1.4Content-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: “http://211.186.5.15/Service/ServiceMethod”<?xml version="1.0"encoding="utf-8"?><soap:Envelope xmlns:xsi="/2001/XMLSchema-instance"xmlns:xsd="/2001/XMLSchema"xmlns:soap="/soap/envelope/"> <soap:Body><ServiceMethod xmlns="http://211.186.5.15/Service"><param1>string</param1><param2>string</param2><param3>string</param3></ServiceMethod></soap:Body></soap:Envelope>调用方法:<?php$client = new SoapClient("/service/service.asmx?WSDL");//向SOAP服务方发送参数值$param1 = "p1";$param2 = "p2";$param3 = "p3";//serviceParam1,serviceParam2,serviceParam3为发送参数值所对应的参数名(或service端提供的字段名)$param = array('serviceParam1' => $param1,'serviceParam2' =>$param2,'serviceParam3' => $param3);//默认以parameters字段标示传递的参数数组(这里的web services是.net提供的,所以和php提供的Web service不同)$arr = $client->__soapCall('ServiceMethod',array('parameters' => $param));//这里淡水推荐直接使用web services提供的方法,如//$arr = $client->ServiceMethod($param);print_r($arr);?>2.in non-WSDL mode这种情况下soapaction is unknownSOAP发送协议:POST /services/SoapMethod?WSDL HTTP/1.1Host: 220.211.1.12:8088Connection: Keep-AliveUser-Agent: PHP-SOAP/5.2.5Content-Type: text/xml; charset=utf-8SOAPAction: “urn:SoapMethod#ServiceMethod”Content-Length: 1297<?xml version="1.0"encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="/soap/envelope/"xmlns:ns1="urn:SoapMethod"xmlns:xsd="/2001/XMLSchema"xmlns:xsi="/2001/X MLSchema-instance"xmlns:SOAP-ENC="/soap/encoding/"xmlns:ns2="http://220.211.1.12"SOAP-ENV:encodingStyle="/soap/encoding/"><SOAP-ENV:Body><ns1:ServiceMethod><ServiceMethodSection xsi:type="ns2:ServiceObjectType"><param1xsi:type="xsd:string">01019</param1><param2xsi:type="xsd:long">10</param2><param3xsi:type="xsd:long">0</param3><param4xsi:type="xsd:long">11</param4></ServiceMethodSection></ns1:ServiceMethod></SOAP-ENV:Body></SOAP-ENV:Envelope>调用方法:<?php//传递一个参数try{$client = new SoapClient(null,array('location' =>'http://192.168.1.180:8088/services/SoapPage?WSDL','uri' =>'http://192.168.1.180:8088/services/'));$result = $client->__soapCall('ServiceMethod', array('fieldName' =>"data")); //以数组形式传递params//$result = $client->__soapCall('ServiceMethod', array(new SoapParam("data", 'fieldName'))); //以构造服务端参数的形式构造参数传递给服务端var_dump($result);}catch(Exception$e){printf("Message = %s",$e->__toString());}?>附注一下:class SoapParam {__construct ( mixed data, string name )}参数:dataThe data to pass or return. You can pass this parameter directly as PHP value, but in this case it will be named as paramN and the SOAP Service may not understand it.name参数名<?php//传递多个参数://如果服务端在non wsdl的情况下要求传递一个对象参数,该对象中包含多个属性,则try{$client = new SoapClient(null,array('location' =>'http://192.168.1.180:8088/services/SoapPage?WSDL','uri' => 'urn:SoapName'));//uri部分也可能是uri地址class Obj{public$param1 = '01019';public$param2 = 10;public$param3 = 0;public$param4 = 11;}$struct = new Obj(); //创建服务端要求传递的对象//如果服务端变态到传递的参数有的参数类型是你编程语言中没有的数据类型,//如php,没有Java的Long类型(一般web service考虑通用性,数据类型都是string或int型)//就要将参数进行强制类型转换//这样的处理也只是在SOAP传输中将xml的参数类型替换成服务端所要求的类型名//并不是真实转化传递的数据类型$struct->param1 = iconv('gb2312','utf-8',$struct->param1);$struct->param2 = new SoapVar($struct->param2,XSD_LONG);$struct->param3 = new SoapVar($struct->param3,XSD_LONG);$struct->param4 = new SoapVar($struct->param4,XSD_LONG);//序列化对象中使用SoapVar的方法参考php手册对SoapVar的解释,每个参数都解释的很清楚$soapstruct = new SoapVar($struct, SOAP_ENC_OBJECT, "ServiceObjectType","/xsd"); //对象序列化,注意区分,SOAP对象的序列化不是用serialize$result = $client-> ServiceMethod(new SoapParam($soapstruct,'ServiceMethodSection'));//$result = $client->__soapCall('ServiceMethod', array(new SoapParam($soapstruct, 'ServiceMethodSection')));var_dump($result);}catch(Exception$e){printf("Message = %s",$e->__toString());}?>。

相关文档
最新文档