Android-okhttp調接口傳參簡單舉例

步驟1:在主線程中創建thread調接口

        new Thread(new Runnable() {@Overridepublic void run() {getServiceList();}}).start();

步驟2:okhttp調接口

private void getServiceList(){Message msg = new Message();try{OkHttpClient okHttpClient = new OkHttpClient();FormBody.Builder formBodyBuilder = new FormBody.Builder();formBodyBuilder.add("token", "xxx").add("id", "idxxx");if (constellationArr != null) {for (String constellation : constellationArr) {formBodyBuilder.add("constellationArr", constellation);}}FormBody formBody = formBodyBuilder.build();///Request request = new Request.Builder().url("調接口url").post(formBody).build();// 創建 Call 對象并執行請求Call call = okHttpClient.newCall(request);Response response = call.execute();// 處理響應if (response.isSuccessful()) {// 響應成功String responseBody = response.body().string();// 在這里處理響應體JSONObject jsonObject = new JSONObject(responseBody);boolean success = jsonObject.getBoolean("success");String message = jsonObject.getString("msg");String obj = jsonObject.getString("obj");Log.e(TAG, obj);if (success) {// 使用 TypeToken 獲取泛型類型TypeToken<ArrayList<ServicePersonShortBean>> typeToken = new TypeToken<ArrayList<ServicePersonShortBean>>() {};ArrayList<ServicePersonShortBean> servicePersonShortBeanList = gson.fromJson(obj, typeToken.getType());Bundle bundle = new Bundle();bundle.putSerializable("servicePersonShortBeanList", servicePersonShortBeanList);msg.setData(bundle);msg.what = 1;handler.sendMessage(msg);} else {Bundle bundle = new Bundle();if(message.equals("token找不到")){bundle.putString("message", "請您登錄后查詢");}else{bundle.putString("message", message);}msg.setData(bundle);msg.what = 2;handler.sendMessage(msg);}} else {// 響應失敗// 在這里處理失敗情況msg.what = 3;handler.sendMessage(msg);}// 記得關閉響應體response.close();} catch (IOException e) {if (e.toString().contains("request failed")) {msg.what = 4;handler.sendMessage(msg);} else {msg.what = 5;handler.sendMessage(msg);}e.printStackTrace();} catch (JSONException e) {e.printStackTrace();msg.what = 3;handler.sendMessage(msg);}}

步驟三:處理返回信息,在主線程中進行UI展示

// 在主線程中創建 HandlerHandler handler = new Handler(Looper.getMainLooper()) {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//根據信息編碼及數據做出相對應的處理switch (msg.what) {case 1:{Bundle bundle = msg.getData();servicePersonShortBeanList = (ArrayList<ServicePersonShortBean>) bundle.getSerializable("servicePersonShortBeanList");showServicerList();new Thread(new Runnable() {@Overridepublic void run() {loadMoreData();}}).start();break;}case 2:{Bundle bundle = msg.getData();String message = bundle.getString("message");Toast.makeText(ServicePersonListActivity.this, message,Toast.LENGTH_SHORT).show();break;}case 3:Toast.makeText(ServicePersonListActivity.this, "獲取xxx信息失敗,請稍后再試!", Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(ServicePersonListActivity.this, "網絡請求失敗,請稍后重試", Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(ServicePersonListActivity.this, "網絡異常,請檢查您的網絡\"", Toast.LENGTH_SHORT).show();break;case 6:{//加載更多Bundle bundle = msg.getData();ArrayList<ServicePersonShortBean> moreServicePersonShortBeanList = (ArrayList<ServicePersonShortBean>) bundle.getSerializable("moreServicePersonShortBeanList");servicePersonShortBeanList.addAll(moreServicePersonShortBeanList);servicePersonAdapter.notifyDataSetChanged();break;}default:break;}}};

注:鏈式調用寫法舉例

FormBody formBody = formBody = new FormBody.Builder().add("token", token).add("id", id).build();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15142.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【網絡安全】網絡安全協議的重要性

一.網絡安全 1.什么是網絡安全 網絡安全&#xff08;Cyber Security&#xff09;是指網絡系統的硬件、軟件及其系統中的數據受到保護&#xff0c;不因偶然的或者惡意的原因而遭受到破壞、更改、泄露&#xff0c;系統連續可靠正常地運行&#xff0c;網絡服務不中斷。 2.網絡安…

WPF密碼輸入框明文掩碼切換

1&#xff0c;效果 2&#xff0c;代碼&#xff1a; WPF的PasswordBox不能像Winform中的PasswordBox那樣&#xff0c;通過PasswordBox.PasswordChar(char)0顯示明文。所以這里使用無外觀控件構筑掩碼明文切換。 無外觀控件遵守Themes/Generic.xaml文件配置. <ResourceDicti…

視覺檢測實戰項目——九點標定

本文介紹九點標定方法 已知 9 個點的圖像坐標和對應的機械坐標,直接計算轉換矩陣,核心原理即最小二乘擬合 {??′=????+????+????′=??′??+??′??+??′ [??1??11??2??21?????9??91][????′????′????′]=[??1′??…

[Linux]磁盤管理

一.Linux磁盤管理的原理 磁盤分區與Linux的目錄是借助"掛載機制"鏈接的&#xff0c;將一個分區與一個目錄連接起來。訪問目錄&#xff0c;相當于訪問某塊分區 lsblk命令: lsblk命令可以查看磁盤分區&#xff0c;以及每個分區所掛載的目錄 lsblk -f 可以查看更細節的…

山東大學軟件學院項目實訓-創新實訓-基于大模型的旅游平臺(十九)- JUC(5)

synchronized優化原理 輕量級鎖 如果一個對象有多個線程訪問&#xff0c;但多線程訪問的時間是錯開的&#xff08;沒有競爭&#xff09;&#xff0c;可以用輕量級鎖優化 Slf4j(topic "c.ExerciseTransfer")public class Test {?static final Object obj new Obj…

關于陽光雨露外派聯想的面試感想

最近在找工作&#xff0c;接到了一個陽光雨露外派聯想的面試邀請。說實在的一開始就有不對勁的感覺。想必這就是大廠的自信吧&#xff0c;上就問能不能現場面試&#xff0c;然后直接發面試邀請。這時候我倒是沒覺得有啥問題。 然后今天就去面試去了&#xff0c;住的比較偏&…

【研發日記】【策劃向】(一)游戲策劃其實就是一道加減法題

文章目錄 序設計的過程其實是控制自己欲望的過程我海納百川&#xff0c;你要不要看看&#xff1f;我跟別人不一樣&#xff01;我的人設就是沒有人設&#xff0c;或者說任何人設都是我的人設 記 序 不知不覺進入這個行業幾年了&#xff0c;也經歷了獨立開發和團隊開發的過程。在…

欣賞倪詩韻青桐斷紋古琴很罕見:萬中無一。

欣賞倪詩韻青桐斷紋古琴很罕見&#xff1a;萬中無一。龍池側簽海門倪詩韻制&#xff0c;帶收藏證書此琴斷紋優美如江面波光粼粼&#xff0c;為流水蛇腹斷&#xff0c;是倪老師作品精品中的精品。細心的朋友可以看出倪老師在這張琴上題字非常小心認真。用一個詞來形容——萬中無…

CPython3.7.9源碼學習一:C語言基礎、整數對象

C 語言基礎 結構體 // struct(關鍵字) 名稱 {結構體成員};// 定義結構體 struct Student { char name[50]; int age; float score; };// 初始化 結構體變量 struct Student stu1; strcpy(stu1.name, "張三"); stu1.age 20; stu1.score 90.5;// 初始化 …

Spring Boot線程池的 使用

一.異步方法 1.啟動類加EnableAsync注解 2.在需要異步執行的方法上添加Async注解 3.直接調用 結論&#xff1a;異步方法是通過SpringBoot中自動注入的線程池任務執行器實現的 二.自定義線程池 1.創建線程的配置類 2.使用Async注解時指定名稱 3.結論 手動注入多個線程池任務執…

Java 18新特性

Java 18引入了一系列新的特性和改進&#xff0c;這些更新覆蓋了從基本語言構造到更高級別的API等多個方面。以下是一些Java 18的主要新特性&#xff1a; 模式匹配增強&#xff1a;Java 18改進了模式匹配功能&#xff0c;使其更加強大和易于使用。開發人員可以使用模式匹配來簡…

Linux echo命令(在終端輸出文本)

文章目錄 Linux Echo命令深度解析簡介命令語法常見選項- -n&#xff1a;不輸出行尾的換行符&#xff0c;這意味著輸出后不會換到下一行。- -e&#xff1a;啟用反斜杠轉義的解釋&#xff0c;允許使用特殊字符。- -E&#xff1a;禁用反斜杠轉義的解釋&#xff08;默認選項&#x…

基于地理坐標的高階幾何編輯工具算法(2)——相交面裁剪

文章目錄 工具步驟應用場景算法輸入算法輸出算法示意圖算法原理后處理 工具步驟 選中一個需要裁剪的面&#xff0c;點擊“相交面裁剪”工具&#xff0c;多選裁剪模板面&#xff0c;空格執行。 應用場景 常用于基于遙感影像的建筑物幾何面編輯。 算法輸入 一個待裁剪的面&a…

sqlserver的查詢(三)

目錄 10. group by(分組) 11. having(對分組后的信息過濾) 可能從這里開始&#xff0c;執行順序越來越顯得重要了&#xff01;&#xff01;&#xff01; 10. group by(分組) 這個查詢相比前面會有一些困難&#xff1b; 格式&#xff1a;group by 字段的集合&#xff1b; 功…

Java進階學習筆記8——單繼承、Object類、方法重寫

Java 是單繼承的&#xff0c;Java中的類不支持多繼承&#xff0c;但是支持多層繼承。 Object類是所有類的父類。 Java不支持多類繼承&#xff1a; Java支持多層繼承&#xff1a; 反證法&#xff1a; Object類&#xff1a; Object類是java所有類的祖宗類&#xff0c;我們寫的任…

AI爆文寫作:我一般不告訴別人的爆文玩法:如何100%抄襲10W+的爆文標題,讓你也篇篇爆款

有現成的10w擺在眼前我們要做的就是&#xff0c;100%抄標題&#xff0c;以及內容重述。 具體操作步驟&#xff1a; 找到適合自己賬號選題的10w(微信看一看或者頭條)100%抄爆文的標題將這篇文章喂給Al&#xff0c;讓AI分析文章的寫法和主題根據提煉出來的寫法和主題&#xff0…

使用魚香肉絲一鍵安裝重新安裝ROS后mavros節點報錯,.so文件不匹配

解決方案&#xff1a; 1、寫在mavros相關軟件&#xff0c;共卸載7個包 sudo apt-get remove ros-melodic-mav*2、重新安裝mavros&#xff0c;共安裝10個包 sudo apt-get remove ros-melodic-mav*

每日AIGC最新進展(10):符號音樂生成SYMPLEX、新型圖像編輯數據集ReasonPix2Pix、角色一致性插畫生成、高級的風格個性化擴散模型

Diffusion Models專欄文章匯總&#xff1a;入門與實戰 SYMPLEX: Controllable Symbolic Music Generation using Simplex Diffusion with Vocabulary Priors http://arxiv.org/abs/2405.12666v1 本文介紹了一種新的符號音樂生成方法&#xff0c;名為SYMPLEX&#xff0c;它基于…

pod 庫發布腳本

repo_tag.sh 文件 #!/bin/zsh# 私有庫名稱 #PODNAME${PWD##*/} PODNAME"LBHorizontalCenterLayout"function obtain_git_tag {# 類似 "s.version 0.0.1"VERSION_STRINGgrep -E s.version.* ${PODNAME}.podspecTAGtr -cd "[0-9.]" <<&…

使用 JavaParser 解析代碼

[自用] 如何判斷出 java 代碼文本中一個方法的輸入參數個數以及類型。用結構體數組存儲遍歷信息&#xff0c;最后用一個方法實現打印。可以使用第三方庫。 如果是一個語句如何判斷這個語句中的局部變量個數和類型。那么該怎么實現呢&#xff1f; 要判斷 Java 代碼文本中一個方…