一、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.serviceprint 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-20100210service ( 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
44
25
25
三、常见问题
注意,在执行上面的代码时,有可能提示:
复制代码 代码如下:traceback (most recent call last):
file ws.py, line 1, in
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。