zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python调用java的Webservice示例

PythonJAVA 示例 调用 webservice
2023-06-13 09:15:19 时间

一、java端
首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。
webservice的接口代码:

复制代码代码如下:
packagecom.xxx.test.ws;

importjavax.jws.WebMethod;
importjavax.jws.WebService;

/**
 *CreatedwithIntelliJIDEA.
 *User:Administrator
 *Date:14-3-5
 *Time:下午3:11
 */
@WebService(targetNamespace="http://xxx.com/wsdl")
publicinterfaceCalculatorWs{
   @WebMethod
   publicintsum(intadd1,intadd2);

   @WebMethod
   publicintmultiply(intmul1,intmul2);
}


接口实现代码:
复制代码代码如下:
packagecom.xxx.test.ws;
importjavax.jws.WebService;
/**
 *CreatedwithIntelliJIDEA.
 *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")
publicclassCalculatorimplementsCalculatorWs{
   publicintsum(intadd1,intadd2){
       returnadd1+add2;
   }

   publicintmultiply(intmul1,intmul2){
       returnmul1*mul2;
   }
}


发布Webservice代码:[code]
packagecom.xxx.test.endpoint;
importcom.xxx.test.ws.Calculator;
importjavax.xml.ws.Endpoint;

/**
 *CreatedwithIntelliJIDEA.
 *User:Administrator
 *Date:14-3-10
 *Time:下午3:10
 */
publicclassCalclulatorPublisher{
   publicstaticvoidmain(String[]args){
       Endpoint.publish("http://localhost:8080/test/calc",newCalculator());
       //Endpoint.publish("http://10.3.18.44:8080/test/calc",newCalculator());
   }
}[/code]
运行上面的这段代码,让你的webservice跑起来,接下来就可以使用Python来测试你的webservice代码了。
上面的代码跑起来后,你可以直接使用浏览器访问:

复制代码代码如下:http://localhost:8080/test/calc?wsdl
来验证是否启动成功。
二、python端
接下来是python的测试代码:
复制代码代码如下:#!/usr/bin/python
importsuds
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

printclient

sum_result=service.sum(10,34)
printsum_result
printclient.last_received()

multiply_result=service.multiply(5,5)
printmultiply_result
printclient.last_received()

将上述代码保存成webservice.py文件,再修改一下可执行权限:

复制代码代码如下:chmod+xwebservice.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:intarg0,xs:intarg1,)
           sum(xs:intarg0,xs:intarg1,)
        Types(4):
           multiply
           multiplyResponse
           sum
           sumResponse


44
<?xmlversion="1.0"encoding="UTF-8"?>
<S:Envelope>
  <S:Body>
     <ns2:sumResponse>
        <return>44</return>
     </ns2:sumResponse>
  </S:Body>
</S:Envelope>
25
<?xmlversion="1.0"encoding="UTF-8"?>
<S:Envelope>
  <S:Body>
     <ns2:multiplyResponse>
        <return>25</return>
     </ns2:multiplyResponse>
  </S:Body>
</S:Envelope>

三、常见问题

注意,在执行上面的代码时,有可能提示:

复制代码代码如下:Traceback(mostrecentcalllast):
 File"ws.py",line1,in<module>
   importsuds
ImportError:Nomodulenamedsuds
说缺少依赖的包,我们可以手工下载安装suds包。
复制代码代码如下:wgethttp://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
tarzxvfsuds-0.3.9.tar.gz
cdsuds-0.3.9
sudopythonsetup.pyinstall

OK。