python调用java的Webservice示例


Posted in Python onMarch 10, 2014

一、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类定义的讲解
Nov 01 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
你应该知道的python列表去重方法
Jan 17 Python
python读取二进制mnist实例详解
May 31 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
Python的iOS自动化打包实例代码
Nov 22 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Python深度学习之Pytorch初步使用
May 20 Python
pyqt4教程之messagebox使用示例分享
Mar 07 #Python
pyqt4教程之widget使用示例分享
Mar 07 #Python
pyqt4教程之实现windows窗口小示例分享
Mar 07 #Python
python爬虫教程之爬取百度贴吧并下载的示例
Mar 07 #Python
python处理json数据中的中文
Mar 06 #Python
Python中针对函数处理的特殊方法
Mar 06 #Python
python连接mysql调用存储过程示例
Mar 05 #Python
You might like
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
js实现右键弹出自定义菜单
2020/09/08 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
python模块之time模块(实例讲解)
2017/09/13 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
对python生成业务报表的实例详解
2019/02/03 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
python中sys模块是做什么用的
2020/08/16 Python
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
外企C语言笔试题
2013/11/10 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
医学生自我评价
2014/01/27 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
绿色环保标语
2014/06/12 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python