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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之Retrofit小试牛刀

發布時間:2025/3/20 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之Retrofit小试牛刀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感覺好久沒有寫Android的文章了,囧囧囧!因為Retrofit實在是太火了, 火得我一直躍躍欲試,但是由于種種原因吧,一直都沒有用過。周末閑來無事,利用一個以前開發中用過的服務器API來小試牛刀一下,非常簡單,記錄自己的第一次Retrofit之旅。

重要說明:由于涉及到商業機密,所以對請求的數據和服務器地址進行了處理。自己實驗時,請換成自己的服務器。

一、添加依賴、配置項目

這一步就不詳細說了,會的都會,基本就是添加兩個依賴和網絡訪問權限。

compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0'<uses-permission android:name="android.permission.INTERNET" /> 復制代碼

二、根據服務器端返回的JSON數據配置自己的JavaBean

在項目中用Retrofit的時候,肯定和服務器端的哥們商量好了如何交互,也就是說已經知曉了服務器端會返回什么樣的數據(基本都是JSON,只是內容不一樣而已),這些數據你可以直接用字符串接收,然后自己處理,但是這么low的事情,Retrofit肯定可以幫我處理了,用上面的converter-gson就可以自動將JSON轉成我們的對象,前提是需要與返回的JSON字段進行映射,默認情況下字段名一樣就不會出什么問題,但是我卻踩了一個坑,下文會介紹。

  • 服務器端返回的JSON數據如下:
{"message":"ok","list":["id":"","abstract":"","title":"","url":""},...] 復制代碼
  • 根據上面的JSON數據創建JavaBean
import com.google.gson.annotations.SerializedName; import java.util.List;/*** Created by yangfan on 2017/1/7.*///與服務器端數據進行字段映射 public class NewsInfo {private String message;private List<News> list;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public List<News> getList() {return list;}public void setList(List<News> list) {this.list = list;}public static class News {private String id;//@SerializedName:后面是服務器端返回的數據字段名 可以與本地不一樣 該關鍵字就是用來映射的@SerializedName("abstract")private String _abstract;private String title;private String url;public String getId() {return id;}public void setId(String id) {this.id = id;}public String get_abstract() {return _abstract;}public void set_abstract(String _abstract) {this._abstract = _abstract;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}} }復制代碼

踩坑記錄:服務器端居然有一個abstract字段,但是這個是Java關鍵字啊,怎么辦?用@SerializedName告訴Retrofit,我想你把該字段映射成我自定義的名字。

配置訪問服務器API的接口

這個就是真正的訪問服務器的本地API了,我這里只用了GET,其實遠不止這個功能,可以參考官方文檔。

import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Query;/*** Created by yangfan on 2017/1/7.*/ public interface NewsInterface {//獲取服務器的新聞列表,由于新聞類型和分頁顯示的需要,需要傳遞三個參數@GET("news/list")Call<NewsInfo> newsList(@Query("type") String type, @Query("pn") String pn, @Query("ps") String ps);} 復制代碼

Activity

配置好以上信息以后,就可以開始寫Android的程序了。因為我的程序比較簡單,所以我很快就成功獲取數據了,這一塊沒怎么踩坑。

public class MainActivity extends AppCompatActivity {private TextView tvResult;//服務器的基地址 與 @GET("news/list")拼接private static final String baseUrl = "http://服務器地址/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tvResult = (TextView) findViewById(R.id.tvResult);initRetrofit();}private void initRetrofit() {Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create()).build();NewsInterface newsInterface = retrofit.create(NewsInterface.class);Call<NewsInfo> callNewsInfo = newsInterface.newsList("1", "1", "10");callNewsInfo.enqueue(new Callback<NewsInfo>() {@Overridepublic void onResponse(Call<NewsInfo> call, Response<NewsInfo> response) {//成功if (response.code() == 200) {//將返回的數據轉換成自定義的對象NewsInfo newsInfo = response.body();if(newsInfo.getMessage().equals("ok")){//最爽的地方---直接可以進行UI操作tvResult.setText(newsInfo.getList().get(0).get_abstract());}} else {//請求失敗tvResult.setText("查詢失敗!響應碼為:" + response.code());}}@Overridepublic void onFailure(Call<NewsInfo> call, Throwable t) {//請求失敗t.printStackTrace();tvResult.setText("查詢失敗!錯誤原因:" + t.getCause());}});} }復制代碼

運行結果

Retrofit功能非常強大,我也看了很多文檔,上面用的只是冰山一角。目前感覺最大的好處就是可以直接在回調中操作主線程的UI,再也不需要用Handler了,其他牛逼的功能和好處待學習、待發掘。

轉載于:https://juejin.im/post/5a3113875188257df8462c9a

總結

以上是生活随笔為你收集整理的Android开发之Retrofit小试牛刀的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲天堂8 | 国产精品午夜在线观看 | 91成人精品一区在线播放 | 美女被揉胸视频 | 青青草香蕉 | 色婷婷av一区二区三区大白胸 | 精品久久久久久久久久 | 亚洲乱码精品 | 久久av免费| 男人的天堂在线视频 | 绿帽h啪肉np辣文 | 新狠狠干 | 日韩精品国产一区 | 中文字幕在线视频免费观看 | 青青青青青草 | 久久国产精品久久久 | 欧美日韩日本国产 | 亚洲AV无码精品色毛片浪潮 | 精品+无码+在线观看 | 一级片小视频 | 色综合天天综合综合国产 | 亚洲人成电影在线 | 第一页在线视频 | 开心色99| 老外一级黄色片 | 国产午夜三级 | 亚洲色图图片区 | 欧美日韩视频免费 | 中文字幕av久久 | 野花视频在线观看免费 | 久久精品www人人爽人人 | 黄色三级生活片 | 日韩亚洲在线 | 亚洲v国产 | 成人h动漫精品一区二区器材 | 九七伦理电影 | 日韩一区二区三区在线观看 | 国产91在线播放精品91 | 夜夜操狠狠干 | 在线中文字幕播放 | 国产裸体美女永久免费无遮挡 | 欧美另类v| 日韩中文字幕精品 | 日本天堂网在线观看 | 国产精品久久久久久精 | 能看av的网址 | 国产精品白嫩极品美女 | 综合激情网 | 久久白浆 | 国产裸体视频 | 免费操片 | 国产va在线 | 综合色婷婷一区二区亚洲欧美国产 | 久久影库 | 大尺度电影在线 | 爱情岛亚洲首页论坛小巨 | 美女免费视频网站 | 亚洲精品伊人 | 欧美又粗又长又爽做受 | 中文字幕在线观看1 | 一区二区三区波多野结衣 | 亚洲一区欧洲二区 | 国产在线一区二区三区 | 欧美在线xxxx| 欧美色哟哟 | 成人免费毛片免费 | 香蕉视频ap | 91精品婷婷国产综合久久竹菊 | 视频一区在线免费观看 | 久久99久久99精品免视看婷婷 | 处女朱莉第一次 | 天天干干| 久久99中文字幕 | 99在线视频观看 | 亚洲中文字幕一区在线 | 九色一区 | 一区在线视频 | 国产又黄又爽 | 青青草成人网 | 网站在线免费观看 | 麻豆国产91在线播放 | 久草精品在线观看 | av在线免费观看不卡 | 1024金沙人妻一区二区三区 | 色人阁网站 | 99热最新在线 | 成人午夜视频免费观看 | 四虎影视免费看 | 免费看黄色一级大片 | 国产婷婷色一区二区三区在线 | 91sao| 欧美影院一区二区三区 | 成人视屏在线 | 少妇一级淫片免费放2 | 国产乱码一区二区三区在线观看 | 色屁屁网站 | 性高潮久久久久久久久 | 欧美激情一二区 | 成人午夜免费电影 |