咱們並不討論如何去搭建一個WebService,咱們僅僅知道如何去獲取WebService提供的服務, 而後解析返回的XML數據,而後把相關數據顯示到咱們的Android設備上就好!web
首先若是想在Android平臺上調用WebService須要依賴於第三方類庫:ksoap2 而在Android平臺上,使用的是ksoap2 Android,一個高效,輕量級的SOAP開發包! 這個連接永久有效,裏面有兩個版本的Jar包,我用的是老一點版本的,沒有任何問題,徹底能夠用。新的版本你們能夠去本身用一下,應該問題不大。 連接:https://pan.baidu.com/s/1kUPrui7 密碼:lajx瀏覽器
這裏我用的是Android Studio,直接上代碼吧bash
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setXTContentView(R.layout.login_forreject);
init();
}
//定義一個Handler用來更新頁面:
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x001:
// txt_result.setText("結果顯示:\n" + result);
Toast.makeText(LoginForRejectActivity.this, "獲取天氣信息成功", Toast.LENGTH_SHORT).show();
break;
case 0x002:
// txt_result.setText("結果顯示:\n" + result);
Toast.makeText(LoginForRejectActivity.this, "號碼歸屬地查詢成功", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};
private void init() {
// 開啓一個子線程,進行網絡操做,等待有返回結果,使用handler通知UI
new Thread(networkTask).start();
}
/**
* 網絡操做相關的子線程
*/
Runnable networkTask = new Runnable() {
@Override
public void run() {
// TODO
// 在這裏進行 http request.網絡請求相關操做
getRejectInfo();
}
};
private void getRejectInfo() {
// 命名空間
String nameSpace = "http://tempuri.org/";
// 調用的方法名稱
String methodName = "Test";
// EndPoint
String endPoint = "http://192.168.1.164:8080/RejectWebService.asmx";
// SOAP Action
String soapAction = "http://tempuri.org/Test";
// 指定WebService的命名空間和調用的方法名
SoapObject rpc = new SoapObject(nameSpace, methodName);
// 設置需調用WebService接口須要傳入的三個參數devicedCode、carCode、typed
rpc.addProperty("devicedCode", "dff233423238709092");//設備編碼
rpc.addProperty("carCode", "2312kjj234kjdf");//條碼
rpc.addProperty("typed", 0);// 箱碼是1,瓶碼是0
// 生成調用WebService方法的SOAP請求信息,並指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
// 設置是否調用的是dotNet開發的WebService
envelope.dotNet = true;
// 等價於envelope.bodyOut = rpc;
envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(endPoint);
try {
// 調用WebService
transport.call(soapAction, envelope);//ver11,第一個參數不能爲空
// transport.call(null, envelope);//envolopeVersion爲ver12第一個參數能夠爲空,必須接口支持ver12才行
// 獲取返回的數據
SoapObject response = (SoapObject) envelope.bodyIn;
Log.e(TAG, "getRejectInfo: object========"+ response);
//response的處理須要根據返回的具體狀況,基本都要進行下面一步
SoapObject o = (SoapObject) response.getProperty(0);
Log.e(TAG, "getRejectInfo: o==========" + o);
handler.sendEmptyMessage(0x001);
// 獲取返回的結果
// String result = object.getProperty(0).toString();
// Log.e(TAG, "getRejectInfo: result=============="+ result );
// 將WebService返回的結果顯示在TextView中
// resultView.setText(result);
} catch (Exception e) {
e.printStackTrace();
}
}
複製代碼
"http://192.168.1.164:8080/RejectWebService.asmx" 後臺會給你,你能夠在後面加「 ?wsdl 」,個人是這樣的: http://192.168.1.164:8080/RejectWebService.asmx?wsdl 而後在瀏覽器中打開就能夠獲得以下圖片所示: 網絡
1:表示的是調用的方法名稱 methodName 2:表示的是soapAction 3:表示的是命名空間nameSpaceide
另外,別忘了導包和Internet的權限! 是否是很簡單,小夥伴們!ui
在全部的作別裏,我仍是最喜歡明天見。承蒙你出現,夠我喜歡好多年 。this