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连接SQLServer2000的方法详解
Apr 19 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python开发游戏的前期准备
May 05 Python
python如何读取bin文件并下发串口
Jul 05 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
python3.6连接mysql数据库及增删改查操作详解
Feb 10 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
tensorflow+k-means聚类简单实现猫狗图像分类的方法
Apr 28 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并发对MYSQL造成压力的解决方法
2013/02/21 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
万能的php分页类
2017/07/06 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
九种原生js动画效果
2015/11/11 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python自动连接ssh的方法
2015/03/07 Python
Python模拟登陆实现代码
2017/06/14 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
Python requests模块实例用法
2019/02/11 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
幼儿园中班新学期寄语
2014/01/18 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
保护环境倡议书
2014/04/14 职场文书
资产运营委托书范本
2014/10/16 职场文书
道德与公民自我评价
2015/03/09 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers