关于SOAP的几篇文章

转载自:/show-1598-1.shtml

PHP操作soap我总觉得是一件非常痛苦的事情,但没有办法,现在很多功能都是基于WebService的,比如那个amazon的,但其实很多 公司都也还是提供了restful之类的接口,使得PHP与其他系统的数据交换比较方便。但让人痛苦的,有时候,你PHP不得不充当 soapServer,这时候,怎么做呢?zendstudio可以根据你的函数和类,帮你生成wsdl,但大多数情况下,你没有直接生成的手段,怎么 办?官方的soapServer功能也太少了一点。你是否还准备用nuSoap来充当server呢?

搜集了一些资料,用来方便的协助你生成soap接口。如果只是自己的内部调用,可以尝试用phprpc或者它的升级版hprose进行尝试。

1、利用NuSOAP发布wsdl。这是PHP5之前的做法了,因为在PHP5之后,直接有soap库支持,如何发布wsdl,请看:/arlon/blog/item/d8267d1e6ca4adf01ad576cc.html ,然而这个网址打开是白屏的,内容可以稍看这里:

2.4.1 创建支持 WSDL 的 WEB 服务 为了实现 WEB 服务程序对 WSDL 的支持,需要使用 soap_server 的 configureWSDL 方法,并且在调用 soap_server 的 register 方法注册 WEB 服务程序时,需要提供更详细的参数。看下面的代码,代码的文件名是 “/nusoap/nusoap_server3.php”。 <?php require_once("lib/nusoap.php"); function concatenate($str1,$str2) { if (is_string($str1) && is_string($str2)) return $str1 . $str2; else return new soap_fault(' 客户端 ','','concatenate 函数的参数应该是两个字符串 '); } $soap = new soap_server; $soap->configureWSDL('concatenate'); // 初始化对 WSDL 的支持 // 注册服务 $soap->register('concatenate', array("str1"=>"xsd:string","str2"=>"xsd:string"), // 输入参数的定义 array("return"=>"xsd:string") // 返回参数的定义 ); $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $soap->service($HTTP_RAW_POST_DATA); ?> 现在打开浏览器,访问刚才建立的文件,/doc/guide/1.0/zh_cn/topics.webservice

看它的实现是非常简单,在Controller里增加一个转换wsdl的Action,然后,在要提供的方法上面用phpdoc来进行注释。定义传入参数的数据类型等

  • str/string: 对应 xsd:string ;
  • int/integer: 对应 xsd:int ;
  • float/double: 对应 xsd:float ;
  • bool/boolean: 对应 xsd:boolean ;
  • date: 对应 xsd:date ;
  • time: 对应 xsd:time ;
  • datetime: 对应 xsd:dateTime ;
  • array: 对应 xsd:string ;
  • object: 对应 xsd:struct ;
  • mixed: 对应 xsd:anyType .

不过我也确实没有过多的细看,没仔细看它对于AUTH验证支持怎么样(第三点里介绍的工具是有验证的,而且就设在config.php里,非常方便)

好了,我就针对现在的soap server的建立,介绍了四种方法,事实上,我到现在为止是一种都没有用过,nusoap也就用过客户端,那也是几年前的事情了,soapClient 也是,在构建soapHeader的时候也走过很多弯路。第三步介绍的工具,我也只是下载了看看源码,第四步我是看了看手册。只是先集中一下,以后总会用 到而已。
虽然说,PHPRPC和hprose 在andot他们介绍来说,开发速度和处理上,都有较为明显的提高,但如果想做一个公用的web service,那还是用大家都能接受的方法吧。
如果是自己的项目,那可能就会用phprpc或者hprose来了。hprose测试版用过,感觉还是不错的。phprpc,我也做了一个sae平台的移 植版,目前也能够正常的使用。。在这里也有个简单的测试:/。有兴趣的朋友也可以去看看的。

转载于:https://www.cnblogs.com/newnetboy/archive/2011/01/25/tt179.html

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

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

相关文章

VxWorks动态加载

注&#xff1a;最近在做热补丁的功能&#xff0c;看到一篇gateway写的文章&#xff0c;觉得很通俗易懂的&#xff0c;就将搜集到的资料又整理了一下&#xff0c;供大家参考。 使用动态加载目标模块的方式有很多好处&#xff0c;比如可以在不破坏原来的环境下增加调试定位功能&a…

excel办公常用的宏_让领导看傻!精美168套办公常用excel模板免费领

HR们面试的时候&#xff0c;是不是经常看到应聘者的简历上技能那一栏写着精通Excel、PPT等办公技能&#xff1f;你知道Excel用到什么程度才算精通吗&#xff1f;能够用excel做表格就算精通吗&#xff1f;还是要能够熟练使用各种函数&#xff1f;你做出来的Excel报表也许是这样的…

神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python运算符和表达式)

从程序中学习知识点 1.算术运算符 #运算符&#xff08;Operator&#xff09;&#xff1a;完成不同类型的常量、变量之间的运算 #除法运算 / 结果是一个浮点型的精确数的值&#xff0c;与java等其他语言的不同之处 print(7/2,7.0/2,-7/2) #整除运算 print(7//2,-7//2) print(7…

VxWorks系统BSP配置文件及生成下载

%A VxWorks BSP主要配置文件 config.h , Makefile 注解和 BSP生成下载实例。%A%A 相关内容可参考 VxWorks BSP和启动过程%A%A config.h文件配置%A%A /*%A This file contains the configuration parameters for the CPU evaluation board.%A */%A%A #ifndef INCconfigh%A #defi…

float32精度_PyTorch 1.6来了:新增自动混合精度训练、Windows版开发维护权移交微软...

刚刚&#xff0c;Facebook 通过 PyTorch 官方博客宣布&#xff1a;PyTorch 1.6 正式发布&#xff01;新版本增加了一个 amp 子模块&#xff0c;支持本地自动混合精度训练。Facebook 还表示&#xff0c;微软已扩大了对 PyTorch 社区的参与&#xff0c;现在拥有 PyTorch 在 Windo…

神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python语句)

1.if语句 #if语句 x,y 3,5 if x<y:print("x<y") elif xy:print("xy") else:print("x>y") 2.条件表达式 x,y3,5 #表达式1(条件为真的结果) if 判断条件 else 表达式2(条件为假的结果) print(x if x>y else y) 3.while语句 #死循环…

建立调试环境

建立调试环境 Tornado采用支持主机/目标机开发模式。本节以x86系列目标机为例介绍调试环境的建立 。 7.1.1 配置文件config.h 目标机运行的程序包括两部分&#xff1a;引导文件bootrom.sys和操作系统影像文件VxWorks。 引导文件bootrom.sys的主要作用类似于BIOS&#xf…

天气预报的获取

好久没有写技术文章了&#xff0c;2010年工作太忙&#xff0c;奔波在国内各地&#xff0c;也没什么时间关注一些技术方面的事情&#xff0c;最近有一个项目封闭开发&#xff0c;有些时间来写些琐碎的东西&#xff0c;就当是整理下最近的东西吧&#xff0c;没什么技术价值&#…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python列表与元组)

序列数据结构 1.成员是有序排列的 2.每个元素的位置称为下标或索引 3.通过索引访问序列中的成员 4.Python中的序列数据类型有字符串、列表、元组 "abc" ≠ "bca" 5.Python中的列表和元组&#xff0c;可以存放不同类型的数据 列表使用方括号[ ]表示&a…

apktoolkit apk反编译没有文件_[工具] Mac下一键APK逆向环境

安装apktool和dex2jar,jd-guihomebrew安装&#xff1a; brew install apktool brew install dex2jar JD-GUI去http://jd.benow.ca/下载 dmg可能不支持最新版本的mac用不了&#xff0c;打开就报错反编译流程执行脚本apktool d xxx.apk 注&#xff1a;xxx.apk为你要反编译的apk…

搭建你的嵌入式Vxworks开发环境

3.1 最常见的开发环境配置使用串口和网络连接&#xff08;host和target之间&#xff09;。串口连接用于和boot loader之间的通信&#xff08;如输出信息在host上的显示&#xff09;&#xff0c;网络连接用于传输文件&#xff0c;包括Vxworks system image。默认情况下使用网络连…

python开发应用程序错误_Python 程序员经常犯的 10 个错误

常见错误 #6: 不明白Python在闭包中是如何绑定变量的 看下面这个例子&#xff1a; >>> def create_multipliers(): ... return [lambda x : i * x for i in range(5)] >>> for multiplier in create_multipliers(): ... print multiplier(2) ... 你也许希望获…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)

字典和集合 字典 每个字典元素都是一个键(关键字)/值(关键字对应的取值)对 #创建字典 dic_score{"语文":80,"数学":99} #打印 print(dic_score) print(dic_score["语文"]) #长度 print(dic_score.__len__)#错误写法 print(len(dic_score)) #…

VxWorks动态加载.out文件

//Device.cpp #include "other.h" #ifdef __cplusplus extern "C" { #endif int initDevice(char *arg); #ifdef __cplusplus } #endif int initDevice(char *arg) { printf("%s\n", arg); } 生成的.out文件需对其使用如下命令 chmod.exe arx…

[Project Euler]加入欧拉 Problem 9

A Pythagorean triplet is a set of three natural numbers, a b c, for which, a2 b2 c2 For example, 32 42 9 16 25 52. There exists exactly one Pythagorean triplet for which a b c 1000.Find the product abc. 意思很明白找出这样的a, b, c abc 1000 a …

java 在已有的so基础上封装jni_[干货]再见,Android JNI 封装

1 前言2 JNI 速查表2.1 Java 和 Native 数据类型映射表2.2 引用类型3 JNI 理论基础速览4 JNI 常用场景示例4.1 字符串传递(java->native)4.2 字符串返回(native->java)4.3 数组传递(java->native)4.4 其他复杂对象传递(java->native)4.5 复杂对象返回(native->j…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python函数)

函数&#xff08;function) &#xff1a;实现某种特定功能的代码块 优点&#xff1a;程序简洁&#xff0c;可重复调用、封装性好、便于共享 类别&#xff1a;系统函数和用户自定义函数 Python内置函数 数学运算函数 print(abs(-1)) print(pow(2,3)) print(round(3.1415926,…

arm B和BL指令浅析

B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子 程序执行之前&#xff0c;将其下一条指令的地址拷贝到R14&#xff08;LR,链接寄存器&#xff09;。由于BL指令保存了下条指令的地 址&#xff0c;因此使用指令“MOV PC ,LR”即可实现子…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python模块、包和库)

模块&#xff08;Module&#xff09; 模块是一个python文件&#xff08;.py&#xff09;&#xff0c;拥有多个功能相近的函数或类。 便于代码复用&#xff0c;提高编程效率&#xff0c;提高了代码的可维护性。 避免函数名和变量名冲突。 包&#xff08;Package&#xff09;…

ARM uboot中的.lds

对于.lds文件&#xff0c;它定义了整个程序编译之后的连接过程&#xff0c;决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它&#xff0c;但感觉还是挺重要的&#xff0c;有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述&#xff1a;SECTIONS …