python調用java的Webservice樣本

來源:互聯網
上載者:User
一、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




44



25




25


三、常見問題

注意,在執行上面的代碼時,有可能提示:
複製代碼 代碼如下:

Traceback (most recent call last):
File "ws.py", line 1, in
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。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.