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基础教程之字典操作详解
Mar 25 Python
Python实现豆瓣图片下载的方法
May 25 Python
python中map()与zip()操作方法
Feb 27 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
python中使用while循环的实例
Aug 05 Python
python中数据库like模糊查询方式
Mar 02 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
python热力图实现的完整实例
Jun 25 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
一个多文件上传的例子(原创)
2006/10/09 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php实现的顺序线性表示例
2019/05/04 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
Python实现多行注释的另类方法
2014/08/22 Python
浅谈Python中的闭包
2015/07/08 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
python实现快递价格查询系统
2020/03/03 Python
python模拟实现分发扑克牌
2020/04/22 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
2014大学辅导员工作总结
2014/12/02 职场文书
雨花台导游词
2015/02/06 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript