日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我總結的不是很全,這位博主介紹的十分詳細;超級實用

https://blog.csdn.net/guohaosir/article/details/78942485

Retrofit 以Json格式提交數據 (模擬登錄功能)

1、ApiService

/*** 登錄*/@Headers("Content-Type:application/json")@POST("user/login")Observable<ResponseBody> login(@Body RequestBody requestBody);

2、創建一個Bean類

public class UserBean {private String nickname;private String password;public UserBean(String nickname, String password) {this.nickname = nickname;this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;} }

3、將Bean類通過Gson轉為json體

Gson gson = new Gson(); HashMap<String, String> map = new HashMap<>(); map.put("nickname", "123456"); map.put("password, "abcdefg"); String requestBody = gson.toJson(map);// 此時的jsonBody打印出來的結果 // {"password":"abcdefg","nickname":"123456"}

4、Retrofit請求頭是否攜帶? 如果請求帶請求頭 用方法一,如果不帶請求頭 用方法二,請求頭需要添加的數據根據需求自行添加

1、不帶請求頭private void useRetrofit(String url) {Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();apiServices = retrofit.create(ApiService.class);} 2、帶請求頭private void useHeaderRetrofit(String url) {OkHttpClient.Builder builder = new OkHttpClient.Builder();builder.addInterceptor(new Interceptor() {@Overridepublic Response intercept(Chain chain) throws IOException {Request original = chain.request();Request request = original.newBuilder().addHeader("Content-Type", "application/json;charset=utf-8").build();return chain.proceed(request);}});OkHttpClient client = builder.build();Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(client).build();apiServices = retrofit.create(ApiService.class);}

5、網絡請求的代碼

RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), requestBody);Observable<ResponseBody> responseBodyObservable = apiServices.login(body);responseBodyObservable.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Observer<ResponseBody>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {Log.d("TAG", "e:" + e);}@Overridepublic void onNext(ResponseBody responseBody) {try {String string = responseBody.string();Log.d("TAG", string);callBack.onSuccess((T) string);} catch (IOException e) {e.printStackTrace();}}});

Retrofit 以form-data格式提交數據 (模擬登錄功能)

1、ApiService

1、當數據量大的情況下用方法1 推薦此方法 處理數據時方便一些/*** 登錄*/@Multipart@POST("users/login")Observable<ResponseBody> phoneLogin(@PartMap Map<String, RequestBody> requestBodyMap);2、當數據量小的情況下用方法2/*** 登錄*/@Multipart@POST("users/login")Call<JsonObject> phoneLogin(@Part("nickname") RequestBody username, @Part("password") RequestBody password);

2、轉為form-data

/*** 轉換為 form-data** @param requestDataMap* @return*/public static Map<String, RequestBody> generateRequestBody(Map<String, String> requestDataMap) {Map<String, RequestBody> requestBodyMap = new HashMap<>();for (String key : requestDataMap.keySet()) {RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"),requestDataMap.get(key) == null ? "" : requestDataMap.get(key));requestBodyMap.put(key, requestBody);}return requestBodyMap;}

3、Retrofit請求頭是否攜帶? 如果請求帶請求頭 用方法一,如果不帶請求頭 用方法二

1、不帶請求頭private void useRetrofit(String url) {Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();apiServices = retrofit.create(ApiService.class);} 2、帶請求頭private void useHeaderRetrofit(String url) {OkHttpClient.Builder builder = new OkHttpClient.Builder();builder.addInterceptor(new Interceptor() {@Overridepublic Response intercept(Chain chain) throws IOException {Request original = chain.request();Request request = original.newBuilder().addHeader("Content-Type", "application/json;charset=utf-8").build();return chain.proceed(request);}});OkHttpClient client = builder.build();Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(client).build();apiServices = retrofit.create(ApiService.class);}

4、網絡請求的代碼

Map<String, String> formMaildata = new HashMap<>();formMaildata.put("nickname", "123456");formMaildata.put("password", "abcdef");Map<String, RequestBody> stringRequestBodyMap = generateRequestBody(formMaildata);//此時stringRequestBodyMap打印出來的結果 //{password=abcdef, nickname=123456}Observable<ResponseBody> responseBodyObservable = apiServices.login(stringRequestBodyMap);responseBodyObservable.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Observer<ResponseBody>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {Log.d("TAG", "e:" + e);}@Overridepublic void onNext(ResponseBody responseBody) {try {String string = responseBody.string();Log.d("TAG", string); // callBack.onSuccess((T) string);} catch (IOException e) {e.printStackTrace();}}});

May everyone be happy every day and everything go well!

總結

以上是生活随笔為你收集整理的Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆成人精品国产免费 | 免费日本黄色网址 | 一区二区三区四区免费视频 | 久久久久九九 | 久久精品久久精品久久精品 | 奇米狠狠 | 亚洲小视频在线观看 | 亚洲第一精品在线 | 国产欧美一区二区 | 日韩欧美理论 | 色伊人| 91尤物国产福利在线观看 | 日韩美女视频一区 | 天堂影院一区二区 | 91二区 | 男人的天堂日韩 | 91激情影院 | 在线观看黄色的网站 | 国产第一页在线播放 | 黑丝扣逼 | 日本a免费| 电车痴汉在线观看 | 关秀媚三级 | 男人与雌性宠物交啪啪 | 亚洲天堂一级片 | 影音先锋久久 | 91精品国产一区二区三竹菊影视 | 长腿校花无力呻吟娇喘的视频 | 91精品日韩| 国产美女无遮挡免费视频 | 探花av在线 | 国产黄色大片在线观看 | 亚洲25p | www.xxx在线观看 | 亚洲av无码国产精品永久一区 | a在线免费观看 | 日韩无码精品一区二区 | 欧美在线观看视频一区二区 | 天堂久久网 | 五月婷婷操| 亚洲字幕在线观看 | 日韩欧美精品免费 | av久热| www婷婷av久久久影片 | 亚洲第一伊人 | 亚洲永久网站 | 免费成人美女女 | 中文字幕在线日韩 | 神马午夜国产 | 国产精品国产三级国产 | 男人插女人免费视频 | 男人操女人的视频 | 男女吻胸做爰摸下身 | 国产一级在线免费观看 | 天天干网站 | 神马伦理视频 | 国产盗摄av | 久久精品女人 | 亚洲精品国产精 | 日本一级片在线播放 | 制服丝袜国产精品 | 天海翼av在线 | www.在线| 91免费福利视频 | 91久久精品一区二区三 | 男人的天堂99 | 国产h在线观看 | 国产精品一品二品 | 亚洲成年网 | 精品人妻码一区二区三区红楼视频 | 久久久久www | 黄色一级大片在线免费看国产 | 国产三区视频 | 免费在线一区二区三区 | 国产自偷自拍视频 | 潘金莲三级80分钟 | 国产精品久久久久久久妇 | 极品五月天 | 性欧美大战久久久久久久 | 欧美专区第二页 | 亚洲12p | 三上悠亚影音先锋 | 一级黄视频| 亚洲精品国产91 | 影音先锋成人在线 | 中文在线8资源库 | 亚洲女人天堂 | 色播99| 男女激情四射网站 | 蜜臀av无码一区二区三区 | 欧洲精品免费一区二区三区 | 伊人久久久久久久久久久久 | 国产有码视频 | 日韩电影一区 | 欧美熟妇精品一区二区蜜桃视频 | 亚洲国产精品99久久 | www.射 | 波多野结衣久久 | 天天噜 |