很多站长朋友们都不太清楚phpnonwsdl,今天小编就来给大家整理phpnonwsdl,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 如何实现php wsdl webservice 让我的客户端访问 2、 php怎么读取wsdl文档 3、 如何实现PHP WSDL webservice 让我的客户端访问 4、 php怎么生成wsdl文件 5、 SOAP返回的那个XML 文件怎么获取, 如何实现php wsdl webservice 让我的客户端访问首先我创建的文件有:
api.php api的接口类文件
api.wsdl 我创建产生的最后要调用的接口文件
cometrue.php 注册service api类内容的所有内容的执行文件
creat_wsdl.php 创建wsdl文件的执行方法文件
SoapDiscovery.class.php 必须要调用的soap类文件(可在网上查询下载)
第一步 :创建一个service的文件夹专门存放您的api接口项目
第二步:下载SoapDiscovery.class.php类文件,放在您的service文件夹里面
第三步:在service文件夹下面创建您自己api接口类文件api.php,
php怎么读取wsdl文档正常情况只要
$client = new SoapClient('wsdl的url');
$Cardholder = $client->retrieveCardholder($a0,$a1,$a2);
就可以了
这种问题属于严重"环境相关",你那拥有测试环境比没有环境的其他人更有优势的
如果搞不定,也尽量把出错信息、代码等原始环境告诉其他人。 切忌自己解释概括
既然语法层面和使用层面都解决不了,你的问题属于“调试层面”,
请给出url和测试帐户,别人替你调试吧。
如何实现PHP WSDL webservice 让我的客户端访问如何实现PHP WSDL webservice 让我的客户端访问
下面我们来看Java如何通过WSDL文件来调用这些web service:
注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。
1,直接AXIS调用远程的web service
我觉得这种方法比较适合那些高手,他们能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是专门搞这行的,即使一段时间看懂,后来也就忘记了。直接调用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;
php怎么生成wsdl文件办法有两种:
1.zend studio生成
对于zend studio 9之前的版本貌似直接生成:
File ->New -> Other-> Webservice-> WSDL
对于zend studio 9需要安装wsdl插件:
1、打开zendstudio9,选择help(帮助)->welcome
2、在右边的列表中找到WSDL Support,勾选
3、点击Apply changes(应用修改)
4、zde会自动安装,然后提示要重启,点击restart now(现在重新启动)
wsdl支持安装完毕,下面我们来生成一个wsdl文件,步骤如下:
1、选择保存wsdl的项目文件夹
2、右键-new(新建)->other(其他)
3、在弹出的对话框中选择web services,在下级菜单中选择WSDL file,点击next进入下一步
4、命名你的wsdl文件,点击next进入下一步
5、修改target namespace(目标名称空间),其他不变,点击finish。
2.利用SoapDiscovery.class.php生成
SOAP返回的那个XML 文件怎么获取,一. 必备知识
1.wsdl(web服务标记语言)
WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。
具体参考请访问下面网址
2.soap
SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。
具体参考请访问下面网址
3.php扩展
具体参考请访问下面网址
二. php soap开发模式
1. working in swdl mode(契约先行(Contract first)模式)
契约先行模式使用了一个用XML定义的服务接口的WSDL文件。WSDL文件定义了服务必须实现或客户端必须使用的接口。SoapServer和SoapClient的WSDL模式就基于这个概念。也就是用soap通讯的时候必须先有一个定义过的服务接口,才能进行通讯。
2. working in non-swdl mode(代码先行(Code first)模式)
在代码先行模式中,首先要先写出实现服务的代码。然后在大多数情况下,代码会产生一个契约,换种说法,一个WSDL。接着客户端在使用服务的时候就可以使用那个WSDL来获得服务的接口。尽管如此,PHP5的扩展并没有从代码输出一个WSDL的规定,考虑到这种情况,可以在non-WSDL模式下使用 SoapServer和SoapClient。也就是说在soap通讯的时候并不需要一个预先定义过的服务接口,代码会自动的产生。
三.参考例子:
下面介绍如何使用WSDL模式和non-WSDL模式来实现服务和客户端。相对而言,使用WSDL模式来实现服务和客户端会比较容易。
1. noWSDL模式实现
服务端 server.php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
#####################################################
$server = new SoapServer(null, array('uri' => ""));
$server->setClass('test');
$server->handle();
?>
客户端 client.php
<?
$soap=new SoapClient(null, array(
'location' =>'',
'uri' => ""));
print_r($soap->__getFunctions());
echo $soap->show();
?>
2. WSDL模式实现
第一步:编写服务端类文件
class..php
<?php
class test
{
/**
*
* @return string
*/
function show()
{
return 'hello world!';
}
}
?>
第二步:将类文件生成 wsdl文件server.wsdl。
由于wsdl文件编写比较复杂,所以我们用第三方工具生成。我们以zend studio为例子演示:
Tools ==> WSDL Generator ==> Configration name : test; WSDL file name: server
==>NEXT==> 点击 + ==> 选择上面的创建的class.php ==> 这时候会看到一个 classes?? : URL Location的映射,保留 test类前面的勾,并将其url 设置为 SOAP Server的url: ==>点击Finish,ZDE就会创建一个非常漂亮的WSDL了?? 工作基本上完成了.
第三步:服务端编写:
<?php
require ' class..php '; //引入类文件
$server = new SoapServer('server.wsdl');
$server->setClass('test');
$server->handle();
?>
第四步:客户端编写
$soap = new SoapClient('http:// soapserver_url/server.wsdl');
print_r($soap->__getFunctions());
echo $soap->show();
以上两个例子只是一个简单的soap服务编写,已经可以满足大部分需要。如果需要更加高级的功能请参考其他方面的资料。
三. 出现的问题。
1.在方法中对属性的赋值在其他方法中不起作用。
比如在客户端调用服务端某个方法对某个属性赋值。
在其他方法里就不能用。但在 __construct 方法中对属性的赋值是可以个在其他方法中使用的。
2. 提示 Client] looks like we got no XML document错误。
服务器端文件在<?php ?> 标签前后都不要有任何数据包括空格,空行。
3. Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity
原因如下:PHP程序作为 SOAP客户端 采用 WSDL 模式访问远端服务器的时候,PHP是通过调用 libcurl 实现的。至少在 PHP5.2.X 是这样的。如果采用 non-WSDL 模式,就不需要 libcurl。在solaris 没有缺省安装 libcurl,也许是我没有安装。除了 了ibcurl以外,至少还关联的库包括:
libidn,ibgcc,libiconv,libintl,openssl
关于phpnonwsdl的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。