日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Retrofit2網路編程實現方法詳解

瀏覽:12日期:2022-09-21 14:43:58

Android里面本身有OKHttp,不過不是很好用,這里就用Retrofit2,簡單好用。

首先,需要加入網絡權限:

<uses-permission android:name='android.permission.INTERNET' /> <uses-permission android:name='android.permission.READ_EXTERNAL_STORAGE'/> <uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE'/>

在build.gradle文件里加入引用包: Gson不用的話,就不需要添加

implementation ’com.squareup.okhttp3:okhttp:3.0.1’implementation ’com.squareup.retrofit2:retrofit:2.0.2’implementation ’com.squareup.retrofit2:converter-gson:2.0.2’

這時準備工作做完了。

先創建一個接口文件TestService

package controller.hzl.com.testclient;import java.util.List;import okhttp3.ResponseBody;import retrofit2.Call;import retrofit2.http.Field;import retrofit2.http.FormUrlEncoded;import retrofit2.http.GET;import retrofit2.http.HTTP;import retrofit2.http.POST;import retrofit2.http.Path;public interface TestService { @FormUrlEncoded @POST('getmacaddress') Call<ResponseBody> TestCall2(@Field('mobile') String mobile); @FormUrlEncoded @POST('getmacaddress') Call<MacAdress> TestCall3(@Field('mobile') String mobile);}

這里的@POST('getmacaddress') 的getmacaddress 是URL除IP外的最后一個路徑,可以理解為 IP+getmacaddress

這里用的是POST請求方式,@Field('mobile')為請求接口的參數。

寫一個實體類模型,用來匹配接收的數據MacAdress

package controller.hzl.com.testclient;public class MacAdress { private String resultMsg; public String getResultMsg() { return resultMsg; } public void setResultMsg(String resultMsg) { this.resultMsg = resultMsg; } public String getResultState() { return resultState; } public void setResultState(String resultState) { this.resultState = resultState; } public String getResultObj() { return resultObj; } public void setResultObj(String resultObj) { this.resultObj = resultObj; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getDelta() { return delta; } public void setDelta(String delta) { this.delta = delta; } private String resultState; private String resultObj; private String message; private String delta;}

最后主MainActivity

package controller.hzl.com.testclient;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.TextView;import okhttp3.MediaType;import okhttp3.RequestBody;import okhttp3.ResponseBody;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;public class MainActivity extends Activity { private Button button1; private Button button2; private Button button3; private Button button4; private Button button5; private Button button6; private Button button7; private Button button8; private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button4 = (Button) findViewById(R.id.button4); button5 = (Button) findViewById(R.id.button5); button6 = (Button) findViewById(R.id.button6); button7 = (Button) findViewById(R.id.button7); button8 = (Button) findViewById(R.id.button8); image = (ImageView) findViewById(R.id.image); button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) {GitHubServiceTest(); } }); button2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) {IWeatherGetTest(); } }); } private void GitHubServiceTest() { Retrofit retrofit = new Retrofit.Builder() .baseUrl('http://115.29.190.99/api/meta/') .addConverterFactory(GsonConverterFactory.create()) .build(); TestService service = retrofit.create(TestService.class); //https://api.github.com/users/octocat/repos Call<ResponseBody> call = service.TestCall2('13296540788'); call.enqueue(new Callback<ResponseBody>() {@Overridepublic void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { // Get result bean from response.body() // List<Repo> repos = response.body(); System.out.println(response.code()); try { System.out.println(response.body().string()); String jsonstr = new String(response.body().bytes()); System.out.println('jsonstr='+jsonstr); }catch (Exception e){ } // Get header item from response String links = response.headers().get('Link'); showlog('links='+links); /** * 不同于retrofit1 可以同時操作序列化數據javabean和header */}@Overridepublic void onFailure(Call<ResponseBody> call, Throwable throwable) { throwable.printStackTrace(); //showlog(throwable.getCause().toString());} }); } private void IWeatherGetTest() { { Retrofit retrofit = new Retrofit.Builder() .baseUrl('http://115.29.190.99/api/meta/') .addConverterFactory(GsonConverterFactory.create()) .build(); TestService service = retrofit.create(TestService.class); //https://api.github.com/users/octocat/repos Call<MacAdress> call = service.TestCall3('13296540788'); call.enqueue(new Callback<MacAdress>() {@Overridepublic void onResponse(Call<MacAdress> call, Response<MacAdress> response) { // Get result bean from response.body() // List<Repo> repos = response.body(); System.out.println(response.code()); try { System.out.println(response.body().getResultObj()); System.out.println(response.body().getResultState()); }catch (Exception e){ } // Get header item from response String links = response.headers().get('Link'); showlog('links='+links); /** * 不同于retrofit1 可以同時操作序列化數據javabean和header */}@Overridepublic void onFailure(Call<MacAdress> call, Throwable throwable) { throwable.printStackTrace(); //showlog(throwable.getCause().toString());} }); } } public static void showlog(String info) { System.out.print('Retrofit ' + info + 'n'); } }

這里的baseUrl('http://115.29.190.99/api/meta/') 就是URL的前面路徑,加上@POST('getmacaddress') 的getmacaddress 其實就是 :http://115.29.190.99/api/meta/getmacaddress 請求的全路徑。

兩種方式:

TestCall2 是直接接收接收返回json的數據。

TestCall3 是用模型接收返回的json數據。

輸出結構為:

Android Retrofit2網路編程實現方法詳解

代碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品女主播一区二区三区| 91精品二区| 中文字幕亚洲影视| 久久在线免费| 欧美精品aa| 免费成人网www| 久久久久久夜| 美腿丝袜亚洲一区| 91大神在线观看线路一区| 日韩欧美午夜| 国产成人1区| 日韩精品久久久久久久软件91| 91福利精品在线观看| 综合激情五月婷婷| 亚洲欧美久久| 精品国产亚洲一区二区三区在线 | 亚洲成人va| 精品视频国内| 亚洲免费毛片| 久久三级福利| 成人久久久久| 欧美gv在线| 久久国产精品免费一区二区三区| 丝袜美腿亚洲一区二区图片| 狠狠色狠狠色综合日日tαg| 日韩欧美网址| 麻豆成人综合网| 精品一区二区三区中文字幕 | 国产黄大片在线观看| 午夜在线一区二区| 久久亚洲一区| 亚洲青青久久| 国产激情精品一区二区三区| 亚洲一级淫片| 日本aⅴ精品一区二区三区| 日韩高清在线一区| 欧美一区成人| 麻豆精品一区二区综合av| 欧美激情视频一区二区三区免费| 国产亚洲欧美日韩在线观看一区二区| 精品国产鲁一鲁****| 精品国产欧美日韩| 日韩免费在线| 91久久久久| 黄色亚洲精品| 在线亚洲自拍| 首页国产欧美日韩丝袜| 日韩成人午夜精品| 国产精品高清一区二区| 国产成人精品一区二区三区在线| 日本不卡免费高清视频在线| 欧美日韩一区二区综合| 狠狠干成人综合网| 亚洲日韩中文字幕一区| 国产精品美女在线观看直播| 久久99视频| 久久久精品久久久久久96| 亚洲免费精品| 午夜在线精品| 六月婷婷一区| 成人午夜毛片| 亚洲乱码久久| 国产乱码精品一区二区亚洲| 欧美日韩在线网站| 日韩一级网站| 日本在线不卡视频| 国产精品宾馆| 欧美综合另类| 国产精品三p一区二区| 五月激情久久| 伊人久久大香伊蕉在人线观看热v| 国产一区二区三区黄网站| 精品一区毛片| 国产亚洲欧美日韩在线观看一区二区 | 水蜜桃精品av一区二区| 99热精品久久| 亚州国产精品| 亚洲成a人片| 日本在线成人| 成人片免费看| 亚洲视频电影在线| 久久久精品区| 精品日韩视频| 中文字幕一区二区三区日韩精品 | 日韩综合一区二区| 久久久久久婷| 亚洲制服欧美另类| 福利一区和二区| 免费成人性网站| 国产精品亚洲产品| 免费视频最近日韩| 天堂√中文最新版在线| 丝袜美腿一区| 国产精品啊v在线| 视频小说一区二区| 日本中文字幕视频一区| 久久在线电影| 欧美国产精品| 每日更新成人在线视频| 国产精品一区二区三区www| 在线视频免费在线观看一区二区| 欧美激情 亚洲a∨综合| 亚洲欧美激情诱惑| 99视频精品视频高清免费| 国产免费播放一区二区| 久久国产精品久久w女人spa| 亚洲成人精品| 鲁鲁在线中文| 国产精品99久久久久久董美香| 久久国产精品亚洲77777| 一区二区三区国产盗摄| 国产日产精品_国产精品毛片 | 亚洲精品一区二区在线看| 国产欧美三级| 亚洲尤物在线| 国产麻豆久久| 免费在线观看一区| 欧美日韩中文字幕一区二区三区| 国产一区二区中文| 欧美成a人片免费观看久久五月天| 国产综合亚洲精品一区二| 免费在线观看一区| 日韩av一区二区三区| 日韩三级精品| 久久视频国产| 日韩理论片av| 香蕉成人av| 91视频精品| 日韩精品专区| 999久久久91| 国产成人精品一区二区三区视频 | 久久久久一区| 亚洲韩日在线| 国产精品毛片在线看| 91成人超碰| 99在线观看免费视频精品观看| 婷婷综合社区| 日韩精品欧美| 久久国产电影| 欧美日韩国产在线观看网站| 尤物精品在线| 久久国产精品亚洲77777| 免费国产亚洲视频| 日本伊人久久| 久久精品理论片| 日韩成人高清| 乱人伦精品视频在线观看| 免播放器亚洲一区| 日韩精品三级| 国产精成人品2018| av在线最新| 国产精品日韩久久久| 亚洲女同一区| 久久福利一区| 国产精品视频一区二区三区四蜜臂| 精品一区二区三区视频在线播放| 中文字幕一区久| 亚洲一区二区三区免费在线观看 | 一区二区不卡| 国产精品**亚洲精品| 日韩一区二区在线免费| 在线视频精品| 国产日韩欧美高清免费| 国产精品乱战久久久| 蜜臀国产一区| 美女黄网久久| 麻豆一区在线| 国产精品7m凸凹视频分类| 午夜久久av| 国产成人精品一区二区三区免费| 在线日韩视频| 青草国产精品| 日韩成人高清| 日本亚洲欧洲无免费码在线| 国产成人精品一区二区免费看京| 欧美1区2区3区| 久久国产精品色av免费看| 亚洲三级欧美| 最新国产精品久久久| 国产精品sss在线观看av| 99精品视频在线观看免费播放| 蜜桃免费网站一区二区三区| 国产在线一区不卡| 亚洲天堂免费| 免费在线小视频| 91麻豆精品| 久久精品卡一| 久久国产高清| 欧美视频久久| 日韩二区在线观看| 久久精品国产免费| 在线手机中文字幕| 亚洲少妇在线| 久久久国产精品网站| 高清日韩中文字幕| 亚洲精品国产日韩| 久久九九精品| 精品一区二区三区视频在线播放| 日韩视频免费| 欧美日韩一二三四|