在PHP中利用wsdl创建标准webservice

参照整理:

http://bbs.php100.com/read-htm-tid-95228.htmlhttp://www.ieliwb.com/wsdl-create-soapdiscovery/

说明:

  •     非标准的webservice,可能只能PHP才能访问
  •     标准的webservice,就必须要使用wsdl

在这里我只介绍标准的webservice

一、 创建WSDL

1。网上下载SoapDiscovery.class.php类

2。修改SoapDiscovery.class.php的公共方法getWsdl(),让其自动生成wsdl文件(注意存放路径),这里只是创建一个wsdl模型

复制代码
1 //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
2 //生成wsdl文件,将上面的return注释
3 $fso = fopen($this->class_name . ".wsdl" , "w");
4 fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'));
5 exit;
复制代码

3。提供服务的类或者函数

复制代码
 1 //比如我有个类:person,文件名为:person.class.php★,里面有两个方法,一个是say,一个是run。很简单。
2 <?php
3 class person
4 {
5 public function say()
6 {
7 return("i'm speaking.");
8 }
9 public function run()
10 {
11 return("i'm running,don't disturb me please.");
12 }
13 }
14 ?>
复制代码

4。开始正式生成wsdl:
    创建文件server.php。将以下内容拷贝进去,运行即可生成一个person.wsdl文件

复制代码
1 <?php
2 include("person.class.php");
3 include("SoapDiscovery.class.php");
4 //第一个参数是类名(生成的wsdl文件就是以它来命名的),即person类,第二个参数是服务的名字(这个可以随便写)。
5 $disco = new SoapDiscovery('person','Person');
6 $disco->getWSDL();
7 ?>
复制代码

5。创建webservice服务端程序
    将server.php文件的内容清空,复制以下代码进去:

复制代码
1   <?php
2 include("person.class.php");
3 $objSoapServer = new SoapServer("person.wsdl");//person.wsdl是刚创建的wsdl文件
4 //$objSoapServer = new SoapServer("server.php?wsdl");//这样也行
5 $objSoapServer->setClass("person");//注册person类的所有方法
6 $objSoapServer->handle();//处理请求
7 ?>
复制代码

6。创建webservice客户端程序,测试webservice是否有效,文件名是:client.php

复制代码
 <?php
$client = new SoapClient("person.wsdl");
//$client = new SoapClient("server.php?wsdl");//这样也行
echo($client->say());
echo "<br />";
echo($client->run());
echo "<br />";
?>
复制代码

7。.NET如果要使用的话,你只要提供一个url给他就行了。
获得url的方法:你可以先到person.wsdl文件里面查找<soap:address location="http://xxxxxxxxxxxxxxxxxxxx/server.php" />,这里的url(具体url是根据你的目录确定的)就是你要提供给.NET开发人员使用的。不过别高兴太早,后面要加:“?wsdl”,http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdl这样才是对的,不信你可以将url拷贝到浏览器的地址栏里看下就知道了。
.NET开发人员获得你给他的url之后,就可以在自己的项目里面添加一个服务引用或者web引用了,然后就可以根据提示完成相关操作,对于使用.NET的开发人员来说很简单的。

(1)创建一网站,创建一个web引用,输入url

(2)实力调用

复制代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
sdaf.Solsoft_HelloWorld ddd = new sdaf.Solsoft_HelloWorld();
Label1.Text = ddd.say();
}
}
复制代码
附件下载: 
CreateSoap.rar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kali-Linux2019.04设置中文输入法

1.打开超级终端&#xff0c;输入 apt-get install fcitx 首先安装输入法框架 2.输入apt-get install fcitx-googlepinyin 然后安装google输入法 3.如下图&#xff0c;打开fcitx输入法配置 4.通过左下角的“”“”添加&#xff0c;选择刚才安装的google中文输入法&#xff0c…

C语言实现AES加密解密

AES加密是美国联邦政府采用的一种块加密标准&#xff0c;如今已经被全世界广为使用。嵌入式开发中我们也经常会用到加密解密算法&#xff0c;如果没有硬件模块来实现&#xff0c;就需要用到C代码软件实现。下面介绍调用mbedTLS中的AES加密解密函数实现AES算法。 mbedTLS是一个…

react-native绑定优酷SDK-附效果图和源码

ReactNative绑定优酷SDK需要用到两部分知识&#xff1a; 优酷本身的sdk绑定&#xff1b;RN与原生界面的交互&#xff1b; 效果&#xff1a; RN版本&#xff1a;0.49.3 代码更新日期&#xff1a;2017.10.26 下文也根据绑定需要分为两部分&#xff1a; 一、优酷sdk绑定&#…

我的nginx iis 负载均衡学习(环境搭建)

1&#xff0c;下载并安装nginx 比较简单 2&#xff0c;进行网站的配置 我使用了我的IIS 站点中已经拥有的两个站点 3&#xff0c;进行nginx 的配置 配置如下&#xff1a; 在server 节点之前添加如下的配置&#xff1a; upstream www.dalong.com { server 127.0.0.1; …

Kali-Linux-2019.04虚拟机与物理机实现复制粘贴功能

**1.打开虚拟机VM15&#xff0c;启动进入Kali系统&#xff0c;在虚拟机菜单栏&#xff0c;“虚拟机”->安装VMware Tool&#xff0c;弹出框选择“是”。*在Kali系统桌面出现光盘状态的VMware Tool。 1.在超级终端内操作 cd /media/cdrom0 2.复制VMwareTools文件到tmp目录&…

宝塔LNMP使用步骤nginx+php 7.2

安装BT面板 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh 安装LAMP / LNMP 推荐 PHP7.3(最低要求7.0) MySQL5.7(最低要求5.5) PHP 5.6.x即将停止安全支持 面板新建网站 进入面板, 网站, 新建…

react-native多图选择、图片裁剪(支持ad/ios图片个数控制)

前言&#xff1a; 目前关于rn比较知名并且封装好的图片选择控件很多&#xff0c;不过能同时支持多图片上传&#xff0c;个数控制兼容iOS/Ad的却寥寥无几&#xff0c;而今天介绍的这款框架可以实现&#xff1a;图片裁剪、最大图片个数限制、拍照、本地相册等功能。 效果&#x…

QT5主界面“关闭窗口”按钮设置弹出提示询问信息

QT5主界面为“关闭窗体”按钮和其action添加关闭窗口事件&#xff0c;可以询问是否退出 1.在信号与槽函数中&#xff0c;actQuit关联信号与槽函数&#xff0c;如下&#xff1a; 2.在mainwindow.h文件MainWindow类中添加关闭窗口事件closeEvent 3.在mainwindow.cpp文件添加vo…

Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解

Torchvision更新到0.3.0后支持了更多的功能&#xff0c;其中新增模块detection中实现了整个faster-rcnn的功能。本博客主要讲述如何通过torchvision和pytorch使用faster-rcnn&#xff0c;并提供一个demo和对应代码及解析注释。 目录 如果你不想深入了解原理和训练&#xff0c…

Hadoop安装配置

1、集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统&#xff08;HDFS&#xff0c;Hadoop Distributed Filesystem&#xff09;和MapReduce&#xff08;Google MapReduce的开源实现&#xff09;为核心的Hadoop为用户…

iOS设置拍照retake和use按钮为中文简体

iOS设置拍照retake和use按钮为中文简体&#xff0c;设置有两种方式一个是代码直接控制&#xff0c;第二就是xcode配置本机国际化为“china”&#xff08;简体中文&#xff09;。 本文重点要说的是第二种&#xff0c;这样配置有两个好处&#xff0c;一是操作比较简单&#xff0…

QT5 QSqlQuery的SELECT INSERT UPDATE DELETE命令用法

1.QSqlQuery的SELECT查询记录用法&#xff1a; QSqlQuery q("SELECT * FROM departments");QSqlRecord rec q.record();int idCol rec.indexOf("departID"); // index of the field "departID"int nameColrec.indexOf("department")…

实时手势识别 【手部跟踪】Mediapipe中的hand

参考链接&#xff1a; 1&#xff09;github代码链接&#xff1a;https://github.com/google/mediapipe 2&#xff09;说明文档&#xff1a;https://google.github.io/mediapipe 3&#xff09;python环境配置文档&#xff1a;https://google.github.io/mediapipe/getting_sta…

react native仿微信性别选择-自定义弹出框

简述 要实现微信性别选择需要使用两部分的技术&#xff1a; 第一、是自定义弹出框&#xff1b; 第二、单选框控件使用&#xff1b; 效果 实现 一、配置弹出框 弹出框用的是&#xff1a;react-native-popup-dialog&#xff08;Git地址&#xff1a;https://github.com/jacklam…

斯蒂芬斯蒂芬但是当时发生的s

2019独角兽企业重金招聘Python工程师标准>>> 什么是啊啊啊啊啊啊啊 "> 转载于:https://my.oschina.net/ivanfjz/blog/190114

Error processing line 1 of vision-1.0.0-py3.6-nspkg.pth AttributeError: ‘NoneType‘ object has no

最近调试代码不知道安装什么包导致代码运行的时候出现报错 AttributeError: NoneType object has no attribute loader &#xff0c;虽然代码也能运行通过&#xff0c;但是报错还是很不舒服。 Remainder of file ignored Error processing line 1 of D:\Anaconda3\envs\fastrc…

华为交换机S3700清空配置方法

1、用户视图下输入&#xff1a;reset saved-configuration&#xff1b;输入&#xff1a;Y&#xff0c;确认清除 2、输入&#xff1a;reboot&#xff1b;重启系统&#xff08;第1次提示输入&#xff1a;N 不保存配置&#xff1b;第2次提示输入&#xff1a;Y 确认重启&#xff0…

Udp通讯(零基础)

前面学习了Tcp通讯之后听老师同学们讲到Udp也可以通讯&#xff0c;实现还要跟简单&#xff0c;没有繁琐的连接&#xff0c;所以最近学习了一下&#xff0c;记录下来以便忘记&#xff0c;同时也发表出来与大家相互学习&#xff0c;下面是我自己写的一个聊天例子&#xff0c;实现…

VOC数据集格式转化成COCO数据集格式

VOC数据集格式转化成COCO数据集格式 一、唠叨 之前写过一篇关于coco数据集转化成VOC格式的博客COCO2VOC&#xff0c;最近读到CenterNet的官方代码&#xff0c;实现上则是将voc转化成coco数据格式&#xff0c;这样的操作我个人感觉很不习惯&#xff0c;也觉得有些奇葩&…

react native android6+拍照闪退或重启的解决方案

前言 android 6权限使用的时候需要动态申请&#xff0c;那么在使用rn的时候要怎么处理拍照权限问题呢&#xff1f;本文提供的是一揽子rn操作相册、拍照的解决方案&#xff0c;请看正文的提高班部分。 解决步骤 1、AndroidManifest.xml设置拍照权限&#xff1a; <uses-perm…