python调用java的Webservice示例
python调用java的Webservice示例
发布时间:2016-12-28 来源:查字典编辑
摘要:一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:...

一、java端

首先我使用的是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;

}

}

发布Webservice代码:[code]

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());

}

}[/code]

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

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

复制代码 代码如下:http://localhost:8080/test/calc?wsdl

来验证是否启动成功。

二、python端

接下来是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

输出结果如下:

复制代码 代码如下: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

OK。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新python学习
热门python学习
脚本专栏子分类