• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php调用.net的webservice需要注意的

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先

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());
    }

 

调用成功。

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP代码内执行Linux命令发布时间:2022-07-10
下一篇:
PHP数组排序函数array_multisort()函数详解(一)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap