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中sleep函数用法实例分析
Apr 29 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
python异常和文件处理机制详解
Jul 19 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
python爬虫获取新浪新闻教学
Dec 23 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
手写一个python迭代器过程详解
Aug 27 Python
Python 多线程共享变量的实现示例
Apr 17 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
python 数据分析实现长宽格式的转换
May 18 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扩展介绍与开发教程
2010/08/19 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python使用cookielib库示例分享
2014/03/03 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
python代码编写计算器小程序
2020/03/30 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
总裁助理岗位职责
2014/02/17 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
金融事务专业求职信
2014/04/25 职场文书
学雷锋倡议书
2015/01/19 职场文书
暂停营业通知
2015/04/25 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Python基础之函数嵌套知识总结
2021/05/23 Python
公历12个月名称的由来
2022/04/12 杂记