`
dmcp
  • 浏览: 24383 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

python调用java编写的Webservice

 
阅读更多

首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。

webservice的接口代码:

package com.xxx.test.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 14-3-5
 * Time: 下午3:11
 */
@WebService(targetNamespace = "http://xxx.com/wsdl")
public interface CalculatorWs {
    @WebMethod
    public int sum(int add1, int add2);

    @WebMethod
    public int multiply(int mul1, int mul2);
}
实现代码:

package com.xxx.test.ws;

import javax.jws.WebService;

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 14-3-5
 * Time: 下午3:12
 */
@WebService(
        portName = "CalculatorPort",
        serviceName = "CalculatorService",
        targetNamespace = "http://xxx.com/wsdl",
        endpointInterface = "com.xxx.test.ws.CalculatorWs")
public class Calculator implements CalculatorWs {
    public int sum(int add1, int add2) {
        return add1 + add2;
    }

    public int multiply(int mul1, int mul2) {
        return mul1 * mul2;
    }
}

发布代码:

package com.xxx.test.endpoint;

import com.xxx.test.ws.Calculator;

import javax.xml.ws.Endpoint;

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 14-3-10
 * Time: 下午3:10
 */
public class CalclulatorPublisher {
    public static void main(String[] args) {
        Endpoint.publish("http://localhost:8080/test/calc", new Calculator());
        //Endpoint.publish("http://10.3.18.44:8080/test/calc", new Calculator());
    }
}

运行上面的这段代码,让你的webservice跑起来,接下来就可以使用Python来测试你的webservice代码了。

上面的代码跑起来后,你可以直接使用浏览器访问

http://localhost:8080/test/calc?wsdl
来验证是否启动成功。

接下来是python的测试代码:

#!/usr/bin/python
import suds
url = 'http://localhost:8080/test/calc?wsdl'
#url = 'http://10.3.18.44:8080/test/calc?wsdl'
client = suds.client.Client(url)
service = client.service

print client

sum_result = service.sum(10, 34)
print sum_result
print client.last_received()

multiply_result = service.multiply(5, 5)
print multiply_result
print client.last_received()

将上述代码保存成webservice.py文件,再修改一下可执行权限:

chmod +x webservice.py


然后就可以直接执行了:

./webservice.py

输出结果如下:

Suds ( https://fedorahosted.org/suds/ )  version: 0.3.9 (beta)  build: R658-20100210

Service ( CalculatorService ) tns="http://xxx.com/wsdl"
   Prefixes (1)
      ns0 = "http://xxx.com/wsdl"
   Ports (1):
      (CalculatorPort)
         Methods (2):
            multiply(xs:int arg0, xs:int arg1, )
            sum(xs:int arg0, xs:int arg1, )
         Types (4):
            multiply
            multiplyResponse
            sum
            sumResponse


44
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope>
   <S:Body>
      <ns2:sumResponse>
         <return>44</return>
      </ns2:sumResponse>
   </S:Body>
</S:Envelope>
25
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope>
   <S:Body>
      <ns2:multiplyResponse>
         <return>25</return>
      </ns2:multiplyResponse>
   </S:Body>
</S:Envelope>

注意,执行上面的代码时,有可能提示

Traceback (most recent call last):
  File "ws.py", line 1, in <module>
    import suds
ImportError: No module named suds
说缺少依赖的包,我们可以手工下载安装suds包。

wget http://downloads.sourceforge.net/project/python-suds/suds/0.3.9/suds-0.3.9.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpython-suds%2Ffiles%2F&ts=1394436413&use_mirror=nchc
tar zxvf suds-0.3.9.tar.gz
cd suds-0.3.9
sudo python setup.py install
<完工>

分享到:
评论

相关推荐

    python调用java的Webservice示例

    一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:复制代码 代码如下:package com.xxx.test.ws; import javax.jws.WebMethod;import javax.jws....

    WebServices服务接口调用---基于rpc方式应用

    在压缩包文件"osex_webservice_test"中,可能包含了测试用例或示例代码,帮助开发者了解如何设置和调用基于RPC的WebServices。这些测试可能包括了客户端的调用代码,服务端的部署脚本,以及可能出现的异常处理和错误...

    WebService调用第三方服务的案例

    4. **调用过程**:使用编程语言(如Java的JAX-WS,Python的suds库,或.NET的SoapHttpClient)创建一个客户端,这个客户端能够解析WSDL并生成对应的代理类。通过这些代理类,我们可以构造并发送SOAP请求,然后接收并...

    BibliotecaAlbuns:带有Python客户端的Java WebService来组织音乐专辑库

    提到"带有Python客户端的Java WebService"再次强调了系统的架构设计:服务端使用Java语言开发Web服务,而客户端则使用Python编写,方便用户进行数据的增删改查。这种设计允许用户在不直接操作服务器的情况下,通过...

    JSON返回值格式的WebService样例

    在本示例中,“JSON返回值格式的WebService样例”旨在展示如何构建一个Web服务,该服务能够从数据库获取数据,并以JSON格式将结果返回给调用者。 首先,我们需要了解WebService的基本概念。WebService是一种基于...

    java中如何使用webservice

    这意味着,即便服务端使用Java编写,客户端也可以使用Python、C#或其他语言,只要能处理HTTP和XML即可。 3. **Web Service的运行原理**: - Web Service的核心技术包括XML、SOAP和WSDL。 - **XML(eXtensible ...

    webservice调用天气预报

    5. **发送请求**:使用编程语言(如Java、Python、JavaScript等)的HTTP库发送请求到指定的URL。在天气预报的例子中,`weatherclient`可能是一个客户端应用,负责处理这个过程。 6. **解析响应**:接收到服务器的...

    webservice 第一个小项目

    - 与其他语言的互操作:WebService的一大优势在于跨平台和语言的兼容性,无论是.NET、Python还是PHP,都能与Java编写的WebService进行交互。 通过这个"webservice 第一个小项目",你将能够掌握基本的WebService...

    WebService应用实例及教程

    - 探索这个文件,可以了解如何创建自己的WebService服务,以及如何在不同编程环境中(如Java、Python、.NET)实现客户端调用。 总之,WebService是实现跨平台、跨语言服务集成的重要技术,它简化了分布式系统之间...

    根据访问路径和域名调用webService接口

    例如,使用HttpURLConnection,你可以这样编写代码: ```java URL url = new URL("http://example.com/weatherAPI/getCurrentWeather"); HttpURLConnection connection = (HttpURLConnection) url.openConnection()...

    利用Rserve实现Java调用R脚本.pdf

    作者举例说明了Java与C++、Python语言进行交互访问的常用方法,包括JNI、Jython以及基于Socket通信和WebService技术的方式。 具体到Java与R语言的整合,文中提出了三种主要的调用途径:进程方式、嵌入式模式JRI和...

    利用webservice编写的简易QQ

    2. **开发环境与技术栈**:为了实现这些功能,开发者可能使用了Java、Python、.NET等支持Webservice开发的语言,结合SOAP(简单对象访问协议)或者RESTful API来构建服务端。客户端可能使用了Android或iOS SDK,通过...

    个人用DELPHI写的WEBSERVICE

    5. **调用DELPHI编写的WEBSERVICE** 要调用这个服务,可以使用各种编程语言,只要它们支持SOAP协议。例如,可以用C#、Java或Python的SOAP库来创建一个客户端,通过HTTP请求发送XML数据并接收响应。 6. **应用场景*...

    js调用外部天气预报,手机查询等webservices

    1. 选择合适的技术栈,如Node.js、Python的Flask或Django、Java的Spring Boot等。 2. 设计服务接口和数据结构,确保兼容性和易用性。 3. 部署服务到服务器,如AWS、Azure或阿里云等云服务平台。 4. 提供文档说明如何...

    DB WebService

    3. **编码WebService**:使用如Java的JAX-WS、C#的WCF或者Python的Flask等技术,根据接口设计编写WebService服务端代码,将数据库操作封装成Web方法。 4. **发布WebService**:部署到Web服务器上,使服务可以被网络...

    WebService发送短信

    5. 编写代码:根据文档,使用编程语言(如Java、Python、C#等)编写调用WebService的代码。通常,你需要设置HTTP请求,携带必要的参数(如API密钥、目标手机号码、短信内容等)。 6. 测试发送:通过模拟请求,测试...

    webservice-axis2

    Webservice的核心在于它的平台无关性和语言无关性,这意味着一个使用Java编写的Webservice可以被任何支持HTTP协议的客户端调用,无论这个客户端是用C#、Python还是其他任何语言编写。 #### 二、Axis2:高效的...

    短信网关 对接 webservice

    3. **设计接口调用**:根据API文档,使用编程语言(如Java、Python、PHP等)编写代码,实现对Webservice的调用。这通常涉及到创建SOAP请求,设置必要的请求头和请求体。 4. **测试接口**:通过模拟调用来测试短信...

    WebService

    - 多平台集成:由于基于标准,WebService可以在Java、PHP、Python等各种语言的环境中调用。 总之,WebService结合C#和ASP.NET,为我们提供了构建可互操作、跨平台的网络服务的强大工具。通过理解其原理和实践,...

Global site tag (gtag.js) - Google Analytics