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

Android如何通過(guò)Retrofit提交Json格式數(shù)據(jù)

 更新時(shí)間:2017年08月23日 17:03:53   作者:zhupumao  
本篇文章主要介紹了Android如何通過(guò)Retrofit提交Json格式數(shù)據(jù),具有一定的參考價(jià)值,有興趣的可以了解一下

本文將介紹如何通過(guò)retrofit庫(kù)post一串json格式的數(shù)據(jù)。首先post的json數(shù)據(jù)格式如下:

{
 "Id": "string",
 "DeviceId": "string",
 "Name": "string",
 "SumDistance": 0,
 "RouteNo": "string",
 "SumPoints": 0,
 "SetupTime": "2016-06-10T13:11:00.766Z",
 "UsedTime": 0,
 "Points": [
  {
   "Id": "string",
   "RouteNo": "string",
   "Name": "string",
   "Longitude": "string",
   "Latitude": "string",
   "Height": 0,
   "Distance": 0,
   "Yaw": 0,
   "Pitch": 0,
   "Speed": 0,
   "Usedtime": 0
  }
 ]
}

通過(guò)安裝Android studio gsonformat插件,根據(jù)上面的json格式自動(dòng)生成一個(gè)Bean類,本文命名為FlyRouteBean,

package com.example.administrator.retrofitex; 
import java.util.List; 
 
import android.os.Parcel; 
import android.os.Parcelable; 
 
/** 
 * Created by Administrator on 2016/6/10. 
 */ 
public class FlyRouteBean{ 
 
  /** 
   * Id : string 
   * DeviceId : string 
   * Name : string 
   * SumDistance : 0 
   * RouteNo : string 
   * SumPoints : 0 
   * SetupTime : 2016-05-23T06:20:50.254Z 
   * UsedTime : 0 
   * Points : [{"Id":"string","RouteNo":"string","Name":"string","Longitude":"string","Latitude":"string","Height":0,"Distance":0,"Yaw":0,"Pitch":0,"Speed":0,"Usedtime":0}] 
   */ 
 
  public String Id; 
  public String DeviceId; 
  public String Name; 
  public double SumDistance; 
  public String RouteNo; 
  public int SumPoints; 
  public String SetupTime; 
  public double UsedTime; 
  /** 
   * Id : string 
   * RouteNo : string 
   * Name : string 
   * Longitude : string 
   * Latitude : string 
   * Height : 0 
   * Distance : 0 
   * Yaw : 0 
   * Pitch : 0 
   * Speed : 0 
   * Usedtime : 0 
   */ 
 
  public List<PointsBean> Points; 
 
  public String getId() { 
    return Id; 
  } 
 
  public void setId(String Id) { 
    this.Id = Id; 
  } 
 
  public String getDeviceId() { 
    return DeviceId; 
  } 
 
  public void setDeviceId(String DeviceId) { 
    this.DeviceId = DeviceId; 
  } 
 
  public String getName() { 
    return Name; 
  } 
 
  public void setName(String Name) { 
    this.Name = Name; 
  } 
 
  public double getSumDistance() { 
    return SumDistance; 
  } 
 
  public void setSumDistance(double SumDistance) { 
    this.SumDistance = SumDistance; 
  } 
 
  public String getRouteNo() { 
    return RouteNo; 
  } 
 
  public void setRouteNo(String RouteNo) { 
    this.RouteNo = RouteNo; 
  } 
 
  public int getSumPoints() { 
    return SumPoints; 
  } 
 
  public void setSumPoints(int SumPoints) { 
    this.SumPoints = SumPoints; 
  } 
 
  public String getSetupTime() { 
    return SetupTime; 
  } 
 
  public void setSetupTime(String SetupTime) { 
    this.SetupTime = SetupTime; 
  } 
 
  public double getUsedTime() { 
    return UsedTime; 
  } 
 
  public void setUsedTime(double UsedTime) { 
    this.UsedTime = UsedTime; 
  } 
 
  public List<PointsBean> getPoints() { 
    return Points; 
  } 
 
  public void setPoints(List<PointsBean> Points) { 
    this.Points = Points; 
  } 
 
  public static class PointsBean implements Parcelable { 
    public String Id; 
    public String RouteNo; 
    public String Name; 
    public String Longitude; 
    public String Latitude; 
    public double Height; 
    public double Distance; 
    public double Yaw; 
    public double Pitch; 
    public double Speed; 
    public double Usedtime; 
 
    public String getId() { 
      return Id; 
    } 
 
    public void setId(String Id) { 
      this.Id = Id; 
    } 
 
    public String getRouteNo() { 
      return RouteNo; 
    } 
 
    public void setRouteNo(String RouteNo) { 
      this.RouteNo = RouteNo; 
    } 
 
    public String getName() { 
      return Name; 
    } 
 
    public void setName(String Name) { 
      this.Name = Name; 
    } 
 
    public String getLongitude() { 
      return Longitude; 
    } 
 
    public void setLongitude(String Longitude) { 
      this.Longitude = Longitude; 
    } 
 
    public String getLatitude() { 
      return Latitude; 
    } 
 
    public void setLatitude(String Latitude) { 
      this.Latitude = Latitude; 
    } 
 
    public double getHeight() { 
      return Height; 
    } 
 
    public void setHeight(double Height) { 
      this.Height = Height; 
    } 
 
    public double getDistance() { 
      return Distance; 
    } 
 
    public void setDistance(double Distance) { 
      this.Distance = Distance; 
    } 
 
    public double getYaw() { 
      return Yaw; 
    } 
 
    public void setYaw(double Yaw) { 
      this.Yaw = Yaw; 
    } 
 
    public double getPitch() { 
      return Pitch; 
    } 
 
    public void setPitch(double Pitch) { 
      this.Pitch = Pitch; 
    } 
 
    public double getSpeed() { 
      return Speed; 
    } 
 
    public void setSpeed(double Speed) { 
      this.Speed = Speed; 
    } 
 
    public double getUsedtime() { 
      return Usedtime; 
    } 
 
    public void setUsedtime(double Usedtime) { 
      this.Usedtime = Usedtime; 
    } 
 
    @Override 
    public String toString() { 
      return "PointsBean{" + 
          "Id='" + Id + '\'' + 
          ", RouteNo='" + RouteNo + '\'' + 
          ", Name='" + Name + '\'' + 
          ", Longitude='" + Longitude + '\'' + 
          ", Latitude='" + Latitude + '\'' + 
          ", Height=" + Height + 
          ", Distance=" + Distance + 
          ", Yaw=" + Yaw + 
          ", Pitch=" + Pitch + 
          ", Speed=" + Speed + 
          ", Usedtime=" + Usedtime + 
          '}'; 
    } 
 
    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
      // TODO Auto-generated method stub 
      dest.writeString(Id); 
      dest.writeString(RouteNo); 
      dest.writeString(Name); 
      dest.writeString(Longitude); 
      dest.writeString(Latitude); 
      dest.writeDouble(Height);     
      dest.writeDouble(Distance); 
      dest.writeDouble(Yaw); 
      dest.writeDouble(Pitch); 
      dest.writeDouble(Speed); 
      dest.writeDouble(Usedtime);    
    } 
    public static final Creator<PointsBean> CREATOR=new Creator<PointsBean>() { 
 
      @Override 
      public PointsBean createFromParcel(Parcel source) { 
        // TODO Auto-generated method stub 
        PointsBean pointsBean=new PointsBean(); 
        pointsBean.setId(source.readString()); 
        pointsBean.setRouteNo(source.readString()); 
        pointsBean.setName(source.readString()); 
        pointsBean.setLongitude(source.readString()); 
        pointsBean.setLatitude(source.readString()); 
        pointsBean.setHeight(source.readInt()); 
        pointsBean.setDistance(source.readInt()); 
        pointsBean.setYaw(source.readInt()); 
        pointsBean.setPitch(source.readInt()); 
        pointsBean.setSpeed(source.readInt()); 
        pointsBean.setUsedtime(source.readInt()); 
        return pointsBean; 
      } 
 
      @Override 
      public PointsBean[] newArray(int size) { 
        // TODO Auto-generated method stub 
        return new PointsBean[size]; 
      } 
       
    }; 
 
    @Override 
    public int describeContents() { 
      // TODO Auto-generated method stub 
      return 0; 
    } 
  } 
 
  @Override 
  public String toString() { 
    return "FlyRouteBean{" + 
        "Id='" + Id + '\'' + 
        ", DeviceId='" + DeviceId + '\'' + 
        ", Name='" + Name + '\'' + 
        ", SumDistance=" + SumDistance + 
        ", RouteNo='" + RouteNo + '\'' + 
        ", SumPoints=" + SumPoints + 
        ", SetupTime='" + SetupTime + '\'' + 
        ", UsedTime=" + UsedTime + 
        ", Points=" + Points + 
        '}'; 
  } 
 
   
} 

然后就來(lái)建立接口了,其內(nèi)容如下:

public interface PostRoute { 
  @Headers({"Content-Type: application/json","Accept: application/json"})//需要添加頭 
  @POST("api/FlyRoute/Add") 
  Call<FlyRouteBean> postFlyRoute(@Body RequestBody route);//傳入的參數(shù)為RequestBody 
} 

接下來(lái)就是提交數(shù)據(jù)的了:

FlyRouteBean flyRouteBean=new FlyRouteBean(); 
flyRouteBean=initdata(flyRouteBean);//根據(jù)Bean類初始化一個(gè)需要提交的數(shù)據(jù)類 
Gson gson=new Gson(); 
String route= gson.toJson(flyRouteBean);//通過(guò)Gson將Bean轉(zhuǎn)化為Json字符串形式 
 Retrofit retrofit=new Retrofit.Builder() 
      .baseUrl(URL) 
      .addConverterFactory( GsonConverterFactory.create()) 
      .build(); 
  PostRoute postRoute=retrofit.create(PostRoute.class); 
  RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),route); 
  Call<FlyRouteBean> call=postRoute.postFlyRoute(body); 
  call.enqueue(new Callback<FlyRouteBean>() { 
  @Override 
  public void onResponse(Call<FlyRouteBean> call, Response<FlyRouteBean> response) { 
    Log.e("sssss","-----------------------"+response.body().getDeviceId());//這里是用于測(cè)試,服務(wù)器返回的數(shù)據(jù)就是提交的數(shù)據(jù)。 
  } 
 
  @Override 
  public void onFailure(Call<FlyRouteBean> call, Throwable t) { 
    Log.e("sssss",t.getMessage()); 
  } 
}); 

<----------- 更新如何同時(shí)提交json數(shù)據(jù)和其他查詢字段:--------------->

服務(wù)器端(ASP):核心代碼如下,接收一個(gè)json格式學(xué)生類,加一個(gè)bool類型

 [HttpPost]
  public IHttpActionResult Info(Student stu, bool IsGay)
    {
      
      return Ok(stu.Name);
    }

客戶端:

//接口地址:http://172.20.69.209:9665/api/Test/Info?IsGay={IsGay}
@POST("api/Test/Info")
Call<ResponseBody> postStudent(@Body RequestBody stu,@Query("IsGay") boolean IsGay);

實(shí)現(xiàn)代碼:

Student stu=new Student();
stu.setId("20103177");
stu.setName("zpm");
stu.setAge(18);
Gson gson=new Gson();
String route= gson.toJson(stu);
Log.e("post", "http://");

Retrofit retrofit=new Retrofit.Builder()
    .baseUrl("http://172.20.69.209:9665/")
    .addConverterFactory( GsonConverterFactory.create())
    .build();
PostRoute postRoute=retrofit.create(PostRoute.class);
RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),route);
Call<ResponseBody> call=postRoute.postStudent(body,true);
call.enqueue(new Callback<ResponseBody>() {
  @Override
  public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    try {
      Log.i("onResponse", response.body().string());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  public void onFailure(Call<ResponseBody> call, Throwable t) {
    Log.e("onFailure", t.getMessage());
  }
});

Log.e("postjson", route);

結(jié)果:

具體代碼已經(jīng)傳到github

PS:本文中服務(wù)器都是樓主在局域網(wǎng)搭建的,

需要添加的依賴:

compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'

源代碼下載

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android6.0 屏幕固定功能詳解

    Android6.0 屏幕固定功能詳解

    android6.0在設(shè)置->安全->屏幕固定開(kāi)啟后,然后再長(zhǎng)按home鍵出現(xiàn)最近的幾個(gè)Activity可以選擇一個(gè)圖釘按鈕就開(kāi)啟了屏幕固定功能。這篇文章主要介紹了Android6.0 屏幕固定功能的相關(guān)資料,感興趣的朋友一起看看吧
    2016-09-09
  • Android實(shí)現(xiàn)循環(huán)輪播跑馬燈的效果

    Android實(shí)現(xiàn)循環(huán)輪播跑馬燈的效果

    這篇文章主要介紹了為大家詳細(xì)介紹了如何通過(guò)Android實(shí)現(xiàn)循環(huán)輪播跑馬燈的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • Flutter實(shí)現(xiàn)資源下載斷點(diǎn)續(xù)傳的示例代碼

    Flutter實(shí)現(xiàn)資源下載斷點(diǎn)續(xù)傳的示例代碼

    在項(xiàng)目開(kāi)發(fā)中,特別是C端的產(chǎn)品,資源下載實(shí)現(xiàn)斷點(diǎn)續(xù)傳是非常有必要的。今天我們不講過(guò)多原理的知識(shí),分享下簡(jiǎn)單實(shí)用的資源斷點(diǎn)續(xù)傳
    2022-07-07
  • Kotlin函數(shù)默認(rèn)值的完全講解

    Kotlin函數(shù)默認(rèn)值的完全講解

    這篇文章主要給大家介紹了關(guān)于Kotlin函數(shù)默認(rèn)值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android中獲取IMEI碼的方法

    Android中獲取IMEI碼的方法

    本篇文章是對(duì)在Android中獲取IMEI碼的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android實(shí)現(xiàn)自由拖動(dòng)并顯示文字的懸浮框

    Android實(shí)現(xiàn)自由拖動(dòng)并顯示文字的懸浮框

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自由拖動(dòng)并顯示文字的懸浮框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Android?App跳轉(zhuǎn)微信小程序踩坑實(shí)戰(zhàn)

    Android?App跳轉(zhuǎn)微信小程序踩坑實(shí)戰(zhàn)

    現(xiàn)在市面上很多的應(yīng)用都可以實(shí)現(xiàn)相互跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Android?App跳轉(zhuǎn)微信小程序踩坑的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • AndroidImageSlider實(shí)現(xiàn)炫酷輪播廣告效果

    AndroidImageSlider實(shí)現(xiàn)炫酷輪播廣告效果

    這篇文章主要為大家詳細(xì)介紹了AndroidImageSlider實(shí)現(xiàn)炫酷輪播廣告效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android布局技巧之合并布局

    Android布局技巧之合并布局

    這篇文章主要為大家詳細(xì)介紹了Android布局技巧之合并布局,感興趣的小伙伴們可以參考一下
    2016-06-06
  • android開(kāi)機(jī)自啟動(dòng)原理與實(shí)現(xiàn)案例(附源碼)

    android開(kāi)機(jī)自啟動(dòng)原理與實(shí)現(xiàn)案例(附源碼)

    完成一下步驟后,啟動(dòng)一次程序,完成注冊(cè)。等下次手機(jī)開(kāi)機(jī)時(shí),該軟件即會(huì)自動(dòng)啟動(dòng),具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈
    2013-06-06

最新評(píng)論

隆安县| 贵阳市| 宜春市| 海口市| 彭水| 定兴县| 南靖县| 泗阳县| 五原县| 大埔县| 文成县| 海原县| 兴安县| 清水河县| 巴林左旗| 襄城县| 荥经县| 焉耆| 富锦市| 沙雅县| 桐乡市| 裕民县| 万安县| 湘乡市| 苍山县| 招远市| 永仁县| 莱西市| 乌拉特前旗| 呼图壁县| 苍山县| 买车| 南通市| 中山市| 新巴尔虎右旗| 灯塔市| 界首市| 蓝田县| 湖北省| 龙口市| 进贤县|