編輯:關於Android編程
服務器端Webservice接口參數使用的是自定義結構體,非通用的一些字符串類。
Android 客戶端使用ksoap2 jar包,使用方法如下:
//調用的方法
String methodName = "sceneUserValidate";
//創建httpTransportSE傳輸對象
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);//service url
ht.debug = true;
//使用soap1.1協議創建Envelop對象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//實例化SoapObject對象
SoapObject request = new SoapObject(SERVICE_NS, methodName);
/**
* 設置參數,參數名不一定需要跟調用的服務器端的參數名相同,只需要對應的順序相同即可
* */
SceneUserValidateEvt sevt = new SceneUserValidateEvt();
sevt.setCallNumber("13913008213");
sevt.setInaccessInfo(new InaccessInfo("0020001","0020001","12","12","v1.0"));
request.addProperty("SceneUserValidateEvt", sevt);
//將SoapObject對象設置為SoapSerializationEnvelope對象的傳出SOAP消息
envelope.bodyOut = request;
envelope.setOutputSoapObject(request);
Log.d("haha","start = ");
try{
//調用webService
ht.call(SERVICE_NS+methodName, envelope);
Log.d("haha","dump = "+ht.requestDump);
//txt1.setText("看看"+envelope.getResponse());
if(envelope.getResponse() != null){
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();
Log.d("haha","返回值 = "+name);
}else{
Log.d("haha","返回值 =! ");
}
}catch (Exception e) {
e.printStackTrace();
}04-12 21:31:12.056: W/System.err(4202): at java.lang.Thread.run(Thread.java:856)
第一反應將SceneUserValidateEvt結構體implements Serializable,可是運行後還是如上提示錯誤。
goolge串行化失敗的大多數場景與我的不符合,網上比較多的是一些Integer.class 串行失敗的場景,不過後來想了想翻了一下ksoap的包
有一個這個接口類org.ksoap2.serialization.KvmSerializable;
嘗試了一下將SceneUserValidateEvt結構體implements KvmSerializable,並實現了以下4個接口,運行成功OK。
public abstract interface org.ksoap2.serialization.KvmSerializable {
// Method descriptor #4 (I)Ljava/lang/Object;
public abstract java.lang.Object getProperty(int arg0);
// Method descriptor #6 ()I
public abstract int getPropertyCount();
// Method descriptor #8 (ILjava/lang/Object;)V
public abstract void setProperty(int arg0, java.lang.Object arg1);
// Method descriptor #10 (ILjava/util/Hashtable;Lorg/ksoap2/serialization/PropertyInfo;)V
public abstract void getPropertyInfo(int arg0, java.util.Hashtable arg1, org.ksoap2.serialization.PropertyInfo arg2);
}
RecyclerView使用完全指南,是時候體驗新控件了(二)
1. 概述水平列表展示,設置LayoutManager的方向性 豎直列表展示,設置LayoutManager的方向性 自定義間隔,RecyclerView.addItem
Android的事件分發與消費機制
一、Touch的三個重要方法在Android中,與觸摸事件也就是 Touch 相關的有三個重要方法,這三個方法共同完成觸摸事件的分發。public boolean dis
Android drawPath實現QQ拖拽泡泡
這兩天學習了使用Path繪制貝塞爾曲線相關,然後自己動手做了一個類似QQ未讀消息可拖拽的小氣泡,效果圖如下:接下來一步一步的實現整個過程。基本原理其實就是使用Path繪制
android應用程序訪問linux驅動第一步:實現並測試Linux驅動
一直都想親自做一次使用android應用程序訪問Linux內核驅動的嘗試,但總是沒能做到。最近抽出時間,下決心重新嘗試一次。嘗試的開始當然是先寫一個Linux內核驅動了。