python调用java的Webservice示例
一、java端
首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。
webservice的接口代码:
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);
}
接口实现代码:
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代码了。
上面的代码跑起来后,你可以直接使用浏览器访问:
来验证是否启动成功。
二、python端
接下来是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文件,再修改一下可执行权限:
输出结果如下:
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>
三、常见问题
注意,在执行上面的代码时,有可能提示:
file "ws.py", line 1, in <module>
import suds
importerror: no module named suds
说缺少依赖的包,我们可以手工下载安装suds包。
tar zxvf suds-0.3.9.tar.gz
cd suds-0.3.9
sudo python setup.py install
ok。
上一篇: Python去掉字符串中空格的方法
下一篇: 网恋奔现的结果