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 11 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
Python当中的array数组对象实例详解
Jun 12 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
python cv2图像质量压缩的算法示例
Jun 04 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为php增加openssl模块的方法
2011/06/14 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
详解webpack进阶之插件篇
2017/07/06 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
信号生成及DFT的python实现方式
2020/02/25 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
Python 列表反转显示的四种方法
2020/11/16 Python
Django如何重置migration的几种情景
2021/02/24 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
亿企通软件测试面试题
2012/04/10 面试题
自我推荐书
2013/12/04 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
给实习单位的感谢信
2014/02/01 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
地雷战观后感
2015/06/09 职场文书
优质护理服务心得体会
2016/01/22 职场文书
节约用水广告语60条
2019/11/14 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL