編輯:關於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); }
1. 概述水平列表展示,設置LayoutManager的方向性 豎直列表展示,設置LayoutManager的方向性 自定義間隔,RecyclerView.addItem
一、Touch的三個重要方法在Android中,與觸摸事件也就是 Touch 相關的有三個重要方法,這三個方法共同完成觸摸事件的分發。public boolean dis
這兩天學習了使用Path繪制貝塞爾曲線相關,然後自己動手做了一個類似QQ未讀消息可拖拽的小氣泡,效果圖如下:接下來一步一步的實現整個過程。基本原理其實就是使用Path繪制
一直都想親自做一次使用android應用程序訪問Linux內核驅動的嘗試,但總是沒能做到。最近抽出時間,下決心重新嘗試一次。嘗試的開始當然是先寫一個Linux內核驅動了。