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 getopt 参数处理小示例
Jun 09 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
让代码变得更易维护的7个Python库
Oct 09 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
keras topN显示,自编写代码案例
Jul 03 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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 form 表单传参明细研究
2009/07/17 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
python获取mp3文件信息的方法
2015/06/15 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
在django模板中实现超链接配置
2019/08/21 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
浅析Python 序列化与反序列化
2020/08/05 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
学生爱国演讲稿
2014/01/14 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
员工生日会策划方案
2014/06/14 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
筑梦中国心得体会
2016/01/18 职场文书