php 调用.net的webservice 需要注意的
首先
SoapClient类
这个类用来使用Web services。SoapClient类可以作为给定Web services的客户端。
它有两种操作形式:
* WSDL 模式
* Non-WSDL 模式
在WSDL模式中,构造器可以使用WSDL文件名作为参数,并从WSDL中提取服务所使用的信息。
non-WSDL模式中使用参数来传递要使用的信息。这个类有许多可以用来使用服务的有用的方法。其中SoapClient::__soapCall()是最重要的。这个方法可以用来调用服务中的某个操作。
<?php
/**
* Client端
*/
$ws = " http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
$client = new soapclient($ws,array ('trace'=>0,'uri'=>' http://WebXml.com.cn/'));
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
/**
* 使用$client->__getFunctions();
*可以得到webservice提供的方法
*下面调用的即是其中一个
*这个方法是用来获得某省的城市的
*具体的说明可以在浏览器中输入
* http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl查看
**/
$client->getSupportCity("福建");//这个方法要求的参数是string型或为空
?>
错误信息如下:
Fatal error: Uncaught SoapFault exception: [soap:Server] 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。 in D:\EclipseDocument\weather\Client.php:23 Stack trace: #0 [internal function]: SoapClient->__call('getSupportCity', Array) #1 D:\EclipseDocument\weather\Client.php(23): SoapClient->getSupportCity('??????') #2 {main} thrown in D:\EclipseDocument\weather\Client.php on line 23
试用
$client->__call('getSupportCity', '福建');
一样出错
webmethod 说明:
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
- <s:element name="getSupportCity">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="byProvinceName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
是什么原因导致的呢?
该怎么解决?
回答:
.net 对php调用其webservice 有一个规则
代码如下
$param["arg1"]="value1";
$client->__Call('WebMethodName',array($param));
键名 agr1 是方法 WebMethodName 的参数名,不能变
__call()函数
第一个参数是要调用的方法
第二个参数是二维数组
示例二、
web融合业务调用电信的服务器方法http://219.143.33.58/WebConsumeTest/WebConsume.asmx
try{
$client = new SoapClient("http://219.143.33.58/WebConsumeTest/WebConsume.asmx?wsdl");
//$addResult = $client->__getFunctions();
//$timeResult = $client->webConsumeReq(array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123"));
//$addResult = $client->add(1,6);
$addResult = $client->__call('webConsumeReq',array(array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123")));
//$addResult = $client->__soapCall('webConsumeReq',array('SPID'=>"35101282",'productID'=>"135000000000000229025",'address'=>"13386530106",'content'=>"abc123"));
var_dump( $addResult);
}catch(Exception $e){
printf("Message=%s \n",$e->__toString());
}
调用成功。
php 调用.net的webservice 需要注意的的更多相关文章
- jQuery Ajax 方法调用 Asp.Net WebService 以及调用aspx.cs中方法的详细例子
一.jQuery Ajax 方法调用 Asp.Net WebService (引自Terry Feng) Html文件 <!DOCTYPE html PUBLIC "-//W3C//D ...
- PHP使用SOAP调用.net的WebService数据
需要和一个.net系统进行数据交换,对方提供了一个WebService接口,使用PHP如何调用这个数据呢,下面就看看使用SOAP调用的方法吧 这个与一般的PHP POST或GET传值再查库拿数据的思路 ...
- c#调用JAVA的Webservice处理XML数据及批量轮询的实现方法
前段时间做一个调用外单位WEBSERVICE的项目,项目完成的功能其实很简单,就是我们单位有很多车友会员,我们想对他们提供车辆违章信息告之服务!我们这边交警部门给我们开放了WS的接口,我们就是想通过这 ...
- delphi7编写客户端调用java服务器端webservice示例
1. 首先取得java-webservice服务器端地址.我的是:http://localhost:8080/mywebservice/services/mywebservice?wsdl 2. 然后 ...
- Delphi动态调用Java的WebService 转
Delphi动态调用Java的WebService —— 基于“Axis2发布WebService例子(HelloWorld)” uses ComObj; var WsObject: Variant; ...
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...
- cxf调用c#的webservice
java调用c#的webservice,如今已经測试通过.并且用到了项目中. 如今把实现方式和遇到的问题分享给大家.详细源代码例如以下: JaxWsDynamicClientFactory dcf = ...
- Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)
原文:Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇) 老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的 ...
- php soap调用asp.net webservice
原文:php soap调用asp.net webservice 首先做一下准备工作,找到安装环境里的php.ini把;extension=php_soap.dll去掉前面的;.我这里使用的是wamp, ...
- C#调用Java的WebService添加SOAPHeader验证(2)
C#调用Java的WebService添加SOAPHeader验证 上一篇链接如上,更像是 Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) 来处理xml, ...
随机推荐
- Mysql触发器简明使用
触发器:trigger创建触发器的语法mysql> delimiter $mysql> create trigger 触发器名称 after/before(触发时间) insert/upd ...
- zend studio 9实用快捷键大全 分享ZEND STUDIO 9的常用快捷键,高亮显示相同变量。
=====把鼠标放在调用函数默认是显示函数的参数,而按下ctrl时会显示出函数的原型=====查询调用该函数父函数,这个实在是太有用了:Ctrl+shift+M:模糊搜索方法名 [这块要注意配置,否则 ...
- 理解Socket编程【转载】
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...
- could not open extension control file "/usr/share/postgresql/9.1/extension/plpythonu.control": No such file or directory
在使用createlang 安装plpythonu的时候出现如下错误:could not open extension control file "/usr/share/postgresql ...
- MyEclipse9中的不伤眼修改、FreeMarker插件、JQuery提示插件、全屏(FullScreen)插件的安装
============下载相关附件===================== http://files.cnblogs.com/fhtwins/eclipse-fullscreen_1.0.7.zi ...
- JavaScript 中 4 种常见的内存泄露陷阱
了解 JavaScript 的内存泄露和解决方式! 在这篇文章中我们将要探索客户端 JavaScript 代码中常见的一些内存泄漏的情况,并且学习如何使用 Chrome 的开发工具来发现他们.读一读吧 ...
- Spark on yarn配置项说明与优化整理
配置于spark-default.conf 1. #spark.yarn.applicationMaster.waitTries 5 用于applicationMaster等待Spark maste ...
- Oracle Erp常用网站
2014-01-01 Created By BaoXinjian
- PLSQL_性能优化系列03_Oracle Parallel并发处理
2014-09-25 Created By BaoXinjian
- Gradle学习
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...