python调用webservice
⑴ C#如何调用python写的webservice
调什么的webservice都是一样的
你在C#创建一个工程以后,在Service References文件夹,右键添加Add Service References
Address中输入这个地址
然后点GO
如果地址正确,远程服务正常,下面就会出现这个调用的类和方法。
底下的Namespace里面输入这个调用的名称,例如 PythonWebservice
调用的时候直接
PythonWebservice.类 obj = new ConfirmService.类();
obj.方法(参数),返回的就是结果了。
⑵ python可以向webservice接口传入数据吗
webservice接口接收返回的xml数据的话他调用你的接口的时候是不是传过来一个参数,这个参数应该是xml格式的吧,哪你把这个参数写进一个xml文件,再把这个文件保存进一个临时目录就行了
⑶ Python实现WebService接口(SOAP)
Web Service是一个[平台](https://ke..com/item/平台/1064049)独立的,低耦合的,自包含的、基于可[编程](https://ke..com/item/编程)的web的应用程序,可使用开放的[XML](https://ke..com/item/XML)([标准通用标记语言](https://ke..com/item/标准通用标记语言/6805073)下的一个子集)[标准](https://ke..com/item/标准/219665)来[描述](https://ke..com/item/描述/8928757)、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的[应用程序](https://ke..com/item/应用程序/5985445)。 [1]
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如[标准通用标记语言](https://ke..com/item/标准通用标记语言/6805073)下的子集[XML](https://ke..com/item/XML)、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
**SOAP**
SOAP即[简单对象访问协议](https://ke..com/item/简单对象访问协议)(Simple Object Access Protocol),它是用于交换[XML](https://ke..com/item/XML)([标准通用标记语言](https://ke..com/item/标准通用标记语言)下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行[远程过程调用](https://ke..com/item/远程过程调用)(RPC)的约定。SOAP可以运行在任何其他[传输协议](https://ke..com/item/传输协议)上。例如,你可以使用 SMTP,即因特网[电子邮件协议](https://ke..com/item/电子邮件协议)来传递SOAP消息,这可是很有诱惑力的。在[传输层](https://ke..com/item/传输层)之间的头是不同的,但XML有效负载保持相同。
Web Service 希望实现不同的系统之间能够用“[软件](https://ke..com/item/软件)-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
使用Python实现服务端
service.py 服务端启动文件
app.py webservice接口
使用Python实现客户端
client.py
上面调用的客户端接口,测试结果如下:
⑷ python用suds 调用webservice方法的时候报错。
其实用Python进行webservice通信进行数据交换,就是拼接字符串,没必要用第三方的库。
⑸ 请教一个python调用webservice时进行soapheader认证的问题
本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是ViaualStudio2008可以使用WCF,WCF里面提供了的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。1.首先要自定义SoapHeader,须继承System.Web.Services.Protocols.SoapHeader。usingSystem;usingSystem.Collections.Generic;usingSystem.Web;//////自定义的SoapHeader///publicclassMySoapHeader:System.Web.Services.Protocols.SoapHeader{privatestringuserName=string.Empty;privatestringpassWord=string.Empty;//////构造函数///publicMySoapHeader(){}//////构造函数//////用户名///密码publicMySoapHeader(stringuserName,stringpassWord){this.userName=userName;this.passWord=passWord;}//////获取或设置用户用户名///publicstringUserName{get{returnuserName;}set{userName=value;}}//////获取或设置用户密码///publicstringPassWord{get{returnpassWord;}set{passWord=value;}}}2.添加WebService,并编写相应代码。usingSystem;usingSystem.Collections.Generic;usingSystem.Web;usingSystem.Web.Services;//////WebService的摘要说明///[WebService(Namespace="")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassWebService:System.Web.Services.WebService{//声明Soap头实例publicMySoapHeadermyHeader=newMySoapHeader();[System.Web.Services.Protocols.SoapHeader("myHeader")][WebMethod]publicstringHelloWord(){//可以通过存储在数据库中的用户与密码来验证if(myHeader.UserName.Equals("houlei")&myHeader.PassWord.Equals("houlei")){return"调用服务成功!";}else{return"对不起,您没有权限调用此服务!";}}}3.客户端调用,分别使用不设置SoapHeader与设置SoapHeader。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceApp{classProgram{staticvoidMain(string[]args){localhost.WebServiceservice=newlocalhost.WebService();//没有设置SoapHeader的服务调用Console.WriteLine("没有设置SoapHeader:"+service.HelloWord());Console.WriteLine();//将用户名与密码存入SoapHeader;localhost.MySoapHeaderheader=newlocalhost.MySoapHeader();header.UserName="houlei";header.PassWord="houlei";service.MySoapHeaderValue=header;//设置SoapHeader的服务调用Console.WriteLine("设置SoapHeader:"+service.HelloWord());Console.Read();}}}4.运行应用程序,查看运行结果。再看一下直接通过浏览器的调用结果。点击HelloWord调用Web服务,结果如下:点击“调用”按钮,得到从服务器返回调用结果。添加自定义SoapHeader可以成功调用WebService,否则不能调用WebService,从而实现对WebService的非法调用。这种方法存在一定的弊端,就是在每一个WebService方法上都要进行一下验证,如果用户名与密码存储在数据库中,每调用一次WebService都要访问一次数据库进行用户名与密码的验证,对于频繁调用WebService来说,数据库压力很大。然而少量WebService调用这种方式还是一种不错的选择
⑹ 用java 调用python webservice 是怎么调的
这次出差,我接触最多的是spss,由于项目基于j2ee开发,而java又不能直接取得spss统计结果,好在spss对python的支持还行,最终成功实现了这个模块。感谢前辈们做出的贡献,没有你们,我就不能这样迅速、顺利的完成项目,且别说写这篇文章了。
在前期准备中,我摸索、尝试了三种实现:jython,http,soap,在网上查了很多相关资料,都是只言片语,自己看了还要结合其他的资料才能弄个明白。当然,在这探索的过程中,我是幸运的,每天都让我充满惊喜,每天都有新的收获。
jython是java版本的python,也就是java的完全实现。java代码中,可以调用python的方法,缺点是,jython中导入第三方python mole时,不是那么回事。因为spss的python api主要是一个.pyd的二进制文件,jython导包是按照java的字节码来导入的,所以当在jython中导入spss的python api时会出错,这个想法彻底破灭。
http实现是在现有的B/S交互实现上突发奇想的,python中实现一个简单的web server只要几十行代码,java使用apache的httpclient访问,现在想来确实有点大材小用,自己写一个http socket来请求和响应也写不了多少代码。最后还是实现了,支持spss中文,但是数据封包都要自己来实现,还是有嫌麻烦。
soap实现最简单,server端几十行代码搞定。由于我把spss命令都封装到一个方法中执行了,所以就没有用wsdl来生成java代码了,我使用了较底层的java的http socket,手动对SOAP-ENV打包,并向server端请求,手动解析响应数据。缺点是:SOAP对中文的支持,无论怎么转码,不是python解析SOAP-ENV报错,就是python执行spss命令报错。