最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android通過ksoap2傳遞復(fù)雜數(shù)據(jù)類型及CXF發(fā)布的webservice詳細(xì)介紹

 更新時(shí)間:2017年02月24日 11:36:58   投稿:lqh  
這篇文章主要介紹了 Android通過ksoap2傳遞復(fù)雜數(shù)據(jù)類型詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

 Android通過ksoap2傳遞復(fù)雜數(shù)據(jù)類型及CXF發(fā)布的webservice詳細(xì)介紹

最近在學(xué)校搞點(diǎn)東西,搞了2天的webservice,心累呀,今天中午和小伙伴終于弄通了,感覺就是一些細(xì)節(jié)問題沒有注意到,啊,我的時(shí)間呀,進(jìn)這么過去了,為了不讓小伙伴們走彎路,我還是認(rèn)真的把開發(fā)文檔寫一遍吧!

首先,如果我們要用CXF發(fā)布webservice用自定義類型的對(duì)象來當(dāng)參數(shù)傳遞的話,我們應(yīng)該先把這個(gè)類序列化一遍,下面就是我測(cè)試的代碼,我創(chuàng)建了一個(gè)TGrade類,實(shí)現(xiàn)了KvmSerializable接口,這個(gè)接口里面的三個(gè)方法,這個(gè)接口的好處在于不需要服務(wù)端在去反序列化實(shí)體對(duì)象了,

public class TGrade implements KvmSerializable { 
 
  // Fields 
 
  private Integer GId; 
  private Integer GMax; 
  private Integer GMin; 
  private String GName; 
  private String GPic; 
  private String GType; 
   
  // Constructors 
  /** default constructor */ 
  public TGrade() { 
  } 
 
  /** minimal constructor */ 
  public TGrade(Integer GMax) { 
    this.GMax = GMax; 
  } 
 
  /** full constructor */ 
  public TGrade(Integer GMax, Integer GMin, String GName, String GPic, 
      String GType) { 
    this.GMax = GMax; 
    this.GMin = GMin; 
    this.GName = GName; 
    this.GPic = GPic; 
    this.GType = GType; 
  } 
 
  // Property accessors 
  public Integer getGId() { 
    return this.GId; 
  } 
 
  public void setGId(Integer GId) { 
    this.GId = GId; 
  } 
 
  public Integer getGMax() { 
    return this.GMax; 
  } 
 
  public void setGMax(Integer GMax) { 
    this.GMax = GMax; 
  } 
 
  public Integer getGMin() { 
    return this.GMin; 
  } 
 
  public void setGMin(Integer GMin) { 
    this.GMin = GMin; 
  } 
 
  public String getGName() { 
    return this.GName; 
  } 
 
  public void setGName(String GName) { 
    this.GName = GName; 
  } 
 
  public String getGPic() { 
    return this.GPic; 
  } 
 
  public void setGPic(String GPic) { 
    this.GPic = GPic; 
  } 
 
  public String getGType() { 
    return this.GType; 
  } 
 
  public void setGType(String GType) { 
    this.GType = GType; 
  } 
 
  @Override 
  public Object getProperty(int arg0) { 
    switch (arg0) {  
    case 0:  
      return GId;  
    case 1:  
      return GMax;  
    case 2:  
      return GMin;  
    case 3:  
      return GName;  
    case 4:  
      return GPic; 
    case 5:  
      return GType;  
    default:  
      break;  
    }  
    return null;  
  } 
 
  @Override 
  public int getPropertyCount() { 
    // TODO Auto-generated method stub 
    return 6;//y要注意這里,必須等于參數(shù)的個(gè)數(shù),不然服務(wù)端沒有辦法接受有些參數(shù) 
  } 
 
  @Override 
  public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) { 
    switch (arg0) { 
    case 0:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GId";  
      break;  
    case 1:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GMax";  
      break;  
    case 2:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GMin";  
      break;  
    case 3:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GName";  
      break;  
    case 4:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GPic";  
      break;  
    case 5:  
      arg2.type = PropertyInfo.STRING_CLASS;  
      arg2.name = "GType";  
      break;  
    default:  
      break;  
    }     
  } 
 
  @Override 
  public void setProperty(int arg0, Object arg1) { 
    switch (arg0) { 
    case 0: 
      GId=Integer.parseInt(arg1.toString()); 
      break; 
    case 1: 
      GMax=Integer.parseInt(arg1.toString()); 
 
      break; 
    case 2: 
      GMin=Integer.parseInt(arg1.toString()); 
 
      break; 
    case 3: 
      GName=arg1.toString(); 
 
      break; 
    case 4: 
      GPic=arg1.toString(); 
 
      break; 
    case 5: 
 
      GType=arg1.toString(); 
      break; 
 
    default: 
      break; 
    } 
  } 
 
 
 
} 
 
//-----------------------------下面是我測(cè)試部分的代碼,這部分代碼很重要,需要認(rèn)真的看,我也寫的比較詳細(xì),代碼的世界模糊不得 
 
public boolean addMaintenanceInfo() { 
    String methodName = "addGrade";//服務(wù)端的方法 
    String soapAction =“http://10.127.80.67/gbckf/Android/GradeService”+methodName; 
     
    TGrade person = new TGrade(); 
    person.setProperty(0, "6"); 
    person.setProperty(1, 1); 
    person.setProperty(3, "1"); 
    person.setProperty(4, "1"); 
    person.setProperty(5, "1"); 
    // 建立webservice連接對(duì)象 
    HttpTransportSE transport = new HttpTransportSE(AgbcApi.GRADESERVICEURL,5000);//5秒超時(shí) 
    transport.debug = true;// 是否是調(diào)試模式 
    // 設(shè)置連接參數(shù) 
    SoapObject soapObject = new SoapObject(AgbcApi.NAMESPACE, methodName); 
    PropertyInfo objekt = new PropertyInfo(); 
    objekt.setName("arg0");//這個(gè)arg0很重要,不能是其他的東西,只能是arg0,不要問我為何,不然你就永遠(yuǎn)接受不了參數(shù),因?yàn)槭莤ml文檔類型的東西 
    objekt.setValue(person); 
    objekt.setType(TGrade.class); 
    soapObject.addProperty(objekt); 
    // 設(shè)置返回參數(shù) 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// soap協(xié)議版本必須用SoapEnvelope.VER11(Soap 
    envelope.dotNet = false;// 注意:這個(gè)屬性是對(duì)dotnetwebservice協(xié)議的支持,如果dotnet的webservice 
    envelope.bodyOut = transport; 
    Log.i("請(qǐng)求參數(shù)", soapObject.toString()); 
    envelope.setOutputSoapObject(soapObject);// 設(shè)置請(qǐng)求參數(shù) 
      envelope.addMapping(AgbcApi.NAMESPACE, "addGrade", TGrade.class);// 傳對(duì)象時(shí)必須,參數(shù)namespace是webservice中指定的, 
      (new MarshalBase64()).register(envelope); 
      try { 
      transport.call(soapAction, envelope); 
      if(envelope.bodyIn instanceof SoapFault){ 
        String str = ((SoapFault) envelope.bodyIn).faultstring; 
        Log.i("空節(jié)點(diǎn)返回的東西", str); 
      }else { 
        // SoapObject sb = (SoapObject)envelope.bodyIn;//服務(wù)器返回的對(duì)象存在envelope的bodyIn中 
        Object obj = envelope.getResponse();// 直接將返回值強(qiáng)制轉(zhuǎn)換為已知對(duì)象 
        //Log.d("WebService", "返回結(jié)果:" + obj.toString()); 
      } 
    } 
    catch (IOException e) { 
      e.printStackTrace(); 
    } 
    catch (XmlPullParserException e) { 
      e.printStackTrace(); 
    } 
    catch (Exception ex) { 
      ex.printStackTrace(); 
    } 
 
    return true; 

上面是我親手寫的代碼,若是沒有明白小伙伴,給我留言我給你看看吧,注意請(qǐng)求網(wǎng)絡(luò)不能放在主線程哦,不然要報(bào)錯(cuò)的

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Flutter Android應(yīng)用啟動(dòng)白屏的解決方案

    Flutter Android應(yīng)用啟動(dòng)白屏的解決方案

    任何一個(gè)app基本都會(huì)設(shè)計(jì)一個(gè)啟動(dòng)頁,今天我們就來看看怎么在flutter項(xiàng)目中設(shè)置啟動(dòng)頁,這篇文章主要給大家介紹了關(guān)于Flutter Android應(yīng)用啟動(dòng)白屏解決的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Android開發(fā)中日期工具類DateUtil完整實(shí)例

    Android開發(fā)中日期工具類DateUtil完整實(shí)例

    這篇文章主要介紹了Android開發(fā)中日期工具類DateUtil,結(jié)合完整實(shí)例形式分析了Android針對(duì)日期與時(shí)間的計(jì)算、轉(zhuǎn)換、格式化、獲取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android中的Shape和Selector的結(jié)合使用實(shí)例

    Android中的Shape和Selector的結(jié)合使用實(shí)例

    這篇文章主要介紹了Android中的Shape和Selector的結(jié)合使用實(shí)例,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • Android使用fragment實(shí)現(xiàn)左側(cè)導(dǎo)航

    Android使用fragment實(shí)現(xiàn)左側(cè)導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了Android使用fragment實(shí)現(xiàn)左側(cè)導(dǎo)航,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Android實(shí)現(xiàn)網(wǎng)易云音樂高仿版流程

    Android實(shí)現(xiàn)網(wǎng)易云音樂高仿版流程

    這篇文章主要介紹了Android實(shí)現(xiàn)網(wǎng)易云音樂高仿版,包含了首頁復(fù)雜發(fā)現(xiàn)界面布局和功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android編程實(shí)現(xiàn)基于BitMap獲得圖片像素?cái)?shù)據(jù)的方法

    Android編程實(shí)現(xiàn)基于BitMap獲得圖片像素?cái)?shù)據(jù)的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)基于BitMap獲得圖片像素?cái)?shù)據(jù)的方法,對(duì)比分析了兩種獲取圖片像素的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android uses-permission權(quán)限列表中文注釋版

    Android uses-permission權(quán)限列表中文注釋版

    Android有一個(gè)精心設(shè)計(jì)的安全模型。每一個(gè)應(yīng)用都有其自己Linux用戶和群組,在單獨(dú)的進(jìn)程和VM上運(yùn)行,不能影響到其他應(yīng)用
    2014-05-05
  • Android利用繪制緩沖實(shí)現(xiàn)代碼雨效果

    Android利用繪制緩沖實(shí)現(xiàn)代碼雨效果

    看過很多代碼雨的前端實(shí)現(xiàn),卻很少看到過Android代碼雨效果的實(shí)現(xiàn),當(dāng)然 open gl es的實(shí)現(xiàn)是有的,一個(gè)主要的原因是,在Android Canvas繪制時(shí),很少有人考慮使用繪制緩沖,所以本文將給大家介紹Android如何利用繪制緩沖實(shí)現(xiàn)代碼雨效果,需要的朋友可以參考下
    2024-03-03
  • Android開發(fā)使用strings.xml多語言翻譯解決方案

    Android開發(fā)使用strings.xml多語言翻譯解決方案

    這篇文章主要為大家介紹了Android開發(fā)使用strings.xml多語言翻譯解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • android實(shí)現(xiàn)支付寶咻一咻的幾種思路方法

    android實(shí)現(xiàn)支付寶咻一咻的幾種思路方法

    本篇文章主要介紹了android實(shí)現(xiàn)支付寶咻一咻的幾種思路方法,詳解的介紹了幾種實(shí)現(xiàn)咻一咻的思路和方法,有需要的可以了解一下。
    2016-11-11

最新評(píng)論

雷州市| 延庆县| 化州市| 广灵县| 永丰县| 辉南县| 驻马店市| 天门市| 东山县| 屏东县| 兴仁县| 什邡市| 宝清县| 昌江| 徐州市| 额济纳旗| 广安市| 梨树县| 濮阳市| 上杭县| 襄汾县| 榕江县| 开封市| 凤山市| 泊头市| 诸城市| 沾益县| 曲松县| 舒城县| 横峰县| 友谊县| 盐亭县| 岑巩县| 陆良县| 仁怀市| 清镇市| 巴中市| 双桥区| 裕民县| 凯里市| 常德市|