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脚本来获取mp3文件tag信息的教程
May 04 Python
python通过socket查询whois的方法
Jul 18 Python
使用tensorflow实现AlexNet
Nov 20 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Python3.5运算符操作实例详解
Apr 25 Python
python3下载抖音视频的完整代码
Jun 05 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python面向对象封装操作案例详解
Dec 31 Python
python 中不同包 类 方法 之间的调用详解
Mar 09 Python
Python如何生成xml文件
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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Python 从相对路径下import的方法
2018/12/04 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Puppeteer使用示例详解
2019/06/20 Python
Python字符串对象实现原理详解
2019/07/01 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
django框架forms组件用法实例详解
2019/12/10 Python
了解一下python内建模块collections
2020/09/07 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
经贸日语毕业生自荐信
2013/11/03 职场文书
中国梦读书活动总结
2014/07/10 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
三年级学生期末评语
2014/12/26 职场文书
通用员工手册范本
2015/05/14 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android