这次出差,我接触最多的是spss,由于项目基于j2ee开发,而java又不能直接取得spss统计结果,好在spss对python的支持还行,最终成功实现了这个模块。感谢前辈们做出的贡献,没有你们,我就不能这样迅速、顺利的完成项目,且别说写这篇文章了。
在前期准备中,我摸索、尝试了三种实现:jython,http,soap,在网上查了很多相关资料,都是只言片语,自己看了还要结合其他的资料才能弄个明白。当然,在这探索的过程中,我是幸运的,每天都让我充满惊喜,每天都有新的收获。
jython是java版本的python,也就是java的完全实现。java代码中,可以调用python的方法,缺点是,jython中导入第三方python module时,不是那么回事。因为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命令报错。
如果你有更好的方法或你解决了我说的问题,请联系我,谢谢。
分享到:
相关推荐
在本案例中,我们将探讨如何使用Python来调用一个已发布的WebService接口。 #### 规则引擎概述 规则引擎通过配置完成业务规则逻辑计算。规则包在定义时会包括输入参数和输出参数。配置完成后,这些规则会被导出成...
* Apache Axis:一个开源的WebService 服务器端框架,支持多种编程语言,包括 Java、C#、Python 等。 * J2EE 1.4 环境中直接把无状态 Session Bean(EJB2.1)发布为 WebService:在 J2EE 1.4 环境中,可以将无状态 ...
这个工程详细的介绍了webService服务客户端如何调用简单和复杂的webService,其中就包括传递的参数是对象类型,返回数据是数组类型,还有最简单的基本类型。压缩包里还配置说明,清晰的说明webService的整个过程,对...
一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:复制代码 代码如下:package com.xxx.test.ws; import javax.jws.WebMethod;import javax.jws....
在模拟SOAPUI调用Web服务时,开发者通常会使用编程语言的HTTP客户端库,如Java的HttpURLConnection、Python的requests库或者Node.js的axios。这些库允许我们发送POST请求,并设置请求头(包括SOAPAction头)和请求体...
在压缩包文件"osex_webservice_test"中,可能包含了测试用例或示例代码,帮助开发者了解如何设置和调用基于RPC的WebServices。这些测试可能包括了客户端的调用代码,服务端的部署脚本,以及可能出现的异常处理和错误...
在标题和描述中提到的"webservice,soap调用",这是指使用SOAP协议来调用Web服务的过程。SOAP消息通常以HTTP或HTTPS作为传输协议,其结构主要由三个部分组成:Header、Body和Envelope。Header部分包含了关于消息处理...
2. **Python**:可以使用`zeep`库或`suds-jurko`库来调用WebService。 3. **C#**:可以利用.NET Framework提供的`System.Web.Services.Protocols.SoapHttpClientProtocol`类或使用WCF(Windows Communication ...
* 跨语言平台:WebService 接口调用可以跨语言平台,例如 C#、Java、Python 等。 * 跨操作系统:WebService 接口调用可以跨操作系统,例如 Windows、Linux、Unix 等。 * 松散耦合:WebService 接口调用可以实现松散...
这意味着,即便服务端使用Java编写,客户端也可以使用Python、C#或其他语言,只要能处理HTTP和XML即可。 3. **Web Service的运行原理**: - Web Service的核心技术包括XML、SOAP和WSDL。 - **XML(eXtensible ...
4. **调用过程**:使用编程语言(如Java的JAX-WS,Python的suds库,或.NET的SoapHttpClient)创建一个客户端,这个客户端能够解析WSDL并生成对应的代理类。通过这些代理类,我们可以构造并发送SOAP请求,然后接收并...
3. **发送请求**:使用编程语言(如Java、Python、C#等)中的库或框架(如Apache CXF、Python的suds库、C#的System.ServiceModel命名空间)来发送SOAP请求。这些库可以简化SOAP请求的构建和发送过程。 4. **解析...
- 与其他语言的互操作:WebService的一大优势在于跨平台和语言的兼容性,无论是.NET、Python还是PHP,都能与Java编写的WebService进行交互。 通过这个"webservice 第一个小项目",你将能够掌握基本的WebService...
在大多数编程语言中,都有现成的库或框架支持JSON序列化,例如在Java中我们可以使用Jackson或Gson库,在Python中可以使用json模块,将数据对象转换成JSON字符串。 例如,假设我们有一个用户表,包含id、name和email...
4. **SOAP客户端库**:大多数编程语言都有对应的SOAP客户端库,如Java的JAX-WS,Python的suds,PHP的SoapClient等,它们简化了动态调用Web Service的过程。开发者只需要提供WSDL地址,库会自动生成对应的调用方法。 ...
开发者可以使用各种编程语言(如Java、C#、Python等)的库来生成SOAP客户端,例如Java的JAX-WS,或者使用SOAP UI这样的图形化工具进行测试和调试。 7. **示例:创建SOAP客户端** 以Java为例,可以使用Apache CXF...
- 探索这个文件,可以了解如何创建自己的WebService服务,以及如何在不同编程环境中(如Java、Python、.NET)实现客户端调用。 总之,WebService是实现跨平台、跨语言服务集成的重要技术,它简化了分布式系统之间...
虽然WebService最初主要是基于Java和.NET平台开发的,但随着技术的发展,现在支持多种编程语言,包括但不限于Java、C#、Python、Ruby等。 #### 八、术语解释 - **8.1 XML**:一种用于标记数据的语言,易于人类阅读...
例如,可以使用Java的JAX-WS库、C#的SoapHttpClient类或者Python的suds库来调用Web Service。 在处理Web Service的响应时,要关注异常处理。当服务端返回错误状态码或异常信息时,客户端需要有能力捕获并处理这些...
3. 发送请求:使用HTTP库(如Java的HttpURLConnection或Python的requests库)发送POST请求到WebService的URL,将SOAP请求作为请求体。 4. 处理响应:服务器返回的也是一个SOAP格式的XML响应,客户端解析这个响应,...