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中用format函数格式化字符串的用法
Apr 08 Python
Django框架中的对象列表视图使用示例
Jul 21 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
python将秒数转化为时间格式的实例
Sep 16 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python项目对接钉钉SDK的实现
Jul 15 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
python中re模块知识点总结
Jan 17 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使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
怎么清空javascript数组
2013/05/11 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
《北大荒的秋天》教学反思
2014/04/14 职场文书
先进班集体事迹材料
2014/12/25 职场文书
店长岗位职责
2015/02/11 职场文书
检讨书模板大全
2015/05/07 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
Python闭包的定义和使用方法
2022/04/11 Python