当前位置: 移动技术网 > IT编程>脚本编程>Python > python调用java的Webservice示例

python调用java的Webservice示例

2019年03月31日  | 移动技术网IT编程  | 我要评论

公猫绝育手术,陶朱公家训,欢乐机器人8000

一、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。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网