1.引入资源库

// Retrofit https://www.jianshu.com/p/8066ae4fb1b2
api "com.squareup.retrofit2:retrofit:2.3.0"
api "com.squareup.retrofit2:converter-gson:2.3.0"
api "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
// OkHttp3
api "com.squareup.okhttp3:okhttp:3.10.0"
api "com.squareup.okhttp3:logging-interceptor:3.10.0"
// RxJava2
api "io.reactivex.rxjava2:rxjava:2.1.9"
api "io.reactivex.rxjava2:rxandroid:2.0.2"
// RxLifecycle
api "com.trello.rxlifecycle2:rxlifecycle:2.2.1"
api "com.trello.rxlifecycle2:rxlifecycle-android:2.2.1"
api "com.trello.rxlifecycle2:rxlifecycle-components:2.2.1"2.开始编写基础类RetrofitManager.class
public class RetrofitManager {
static Retrofit retrofit = new Retrofit.Builder()
.baseUrl(“http://www.123.com/”)//这里写访问地址的前半部分,举个例子,如果是http//www.123.com/111,此处就写“http://www.123.com/”
.addConverterFactory(GsonConverterFactory.create())//这行代码是增加Gson的转换方法,可以直接把请求到的结果转换成Bean(根据需要,可以删除)
.build();
public static Retrofit getRetrofit() {
return retrofit;
}
}3.创建API.class文件---GET请求
4.使用GET方式调用网络请求

5.创建API.class文件---POST请求

6.使用POST方式调用网络请求

上面是Retrofi的简单用法,下面是一些其他用法,因为企业都是用post的方法进行的请求,所以例子我都用post来写
1.带有Header的POST请求:
API文件中写:

@FormUrlEncoded
@POST("111")//这里写地址的后半部分,例如全地址是"http://www.123.com/111",这里就写"111"
Call<ResponseBody>postResult(@FieldMap Map<String,String>params,@HeaderMap Map<String,String>headermap);网络请求界面写:

private void httpPOST() {
API api=RetrofitManager.getRetrofit().create(API.class);
Map<String,String>params=new HashMap<>();//post请求时需要的参数
params.put("key","value");
params.put("key","value");
Map<String,String>headermap=new HashMap<>();//header需要的参数
headermap.put("header需要的key","header需要的value");
headermap.put("header需要的key","header需要的value");
retrofit2.Call<ResponseBody> resultcall=api.postResult(params,headermap);
resultcall.enqueue(new retrofit2.Callback<ResponseBody>() {
@Override
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
//网络请求成功
try {
int httpcode=response.code();//获取返回的code,值为200时证明请求成功
String result=response.body().string();//得到网络请求的结果
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
//网络请求失败
}
});
}2.使用本地编写的bean接收网络请求返回的信息
2.1-API

@FormUrlEncoded
@POST("111")//这里写地址的后半部分,例如全地址是"http://www.123.com/111",这里就写"111"
Call<textBean>postResult(@FieldMap Map<String,String>params);2.2-textBean.class(这个bean可以根据后台提供的返回值自己进行编写)

public class textBean {
/**
* word_name : good
* is_CRI : 1
* exchange : {"word_pl":["goods"],"word_third":"","word_past":"","word_done":"","word_ing":"","word_er":["better"],"word_est":["best"]}
* symbols : [{"ph_en":"gʊd","ph_am":"ɡʊd","ph_other":"","ph_en_mp3":"http://res.iciba.com/resource/amp3/oxford/0/28/a2/28a24294fed307cf7e65361b8da4f6e5.mp3","ph_am_mp3":"http://res.iciba.com/resource/amp3/1/0/75/5f/755f85c2723bb39381c7379a604160d8.mp3","ph_tts_mp3":"http://res-tts.iciba.com/7/5/5/755f85c2723bb39381c7379a604160d8.mp3","parts":[{"part":"adj.","means":["好的","优秀的","有益的","漂亮的,健全的"]},{"part":"n.","means":["好处,利益","善良","善行","好人"]},{"part":"adv.","means":["同well"]}]}]
*/
private String word_name;
private String is_CRI;
private ExchangeBean exchange;
private List<SymbolsBean> symbols;
public String getWord_name() {
return word_name;
}
public void setWord_name(String word_name) {
this.word_name = word_name;
}
public String getIs_CRI() {
return is_CRI;
}
public void setIs_CRI(String is_CRI) {
this.is_CRI = is_CRI;
}
public ExchangeBean getExchange() {
return exchange;
}
public void setExchange(ExchangeBean exchange) {
this.exchange = exchange;
}
public List<SymbolsBean> getSymbols() {
return symbols;
}
public void setSymbols(List<SymbolsBean> symbols) {
this.symbols = symbols;
}
public static class ExchangeBean {
/**
* word_pl : ["goods"]
* word_third :
* word_past :
* word_done :
* word_ing :
* word_er : ["better"]
* word_est : ["best"]
*/
private String word_third;
private String word_past;
private String word_done;
private String word_ing;
private List<String> word_pl;
private List<String> word_er;
private List<String> word_est;
public String getWord_third() {
return word_third;
}
public void setWord_third(String word_third) {
this.word_third = word_third;
}
public String getWord_past() {
return word_past;
}
public void setWord_past(String word_past) {
this.word_past = word_past;
}
public String getWord_done() {
return word_done;
}
public void setWord_done(String word_done) {
this.word_done = word_done;
}
public String getWord_ing() {
return word_ing;
}
public void setWord_ing(String word_ing) {
this.word_ing = word_ing;
}
public List<String> getWord_pl() {
return word_pl;
}
public void setWord_pl(List<String> word_pl) {
this.word_pl = word_pl;
}
public List<String> getWord_er() {
return word_er;
}
public void setWord_er(List<String> word_er) {
this.word_er = word_er;
}
public List<String> getWord_est() {
return word_est;
}
public void setWord_est(List<String> word_est) {
this.word_est = word_est;
}
}
public static class SymbolsBean {
/**
* ph_en : gʊd
* ph_am : ɡʊd
* ph_other :
* ph_en_mp3 : http://res.iciba.com/resource/amp3/oxford/0/28/a2/28a24294fed307cf7e65361b8da4f6e5.mp3
* ph_am_mp3 : http://res.iciba.com/resource/amp3/1/0/75/5f/755f85c2723bb39381c7379a604160d8.mp3
* ph_tts_mp3 : http://res-tts.iciba.com/7/5/5/755f85c2723bb39381c7379a604160d8.mp3
* parts : [{"part":"adj.","means":["好的","优秀的","有益的","漂亮的,健全的"]},{"part":"n.","means":["好处,利益","善良","善行","好人"]},{"part":"adv.","means":["同well"]}]
*/
private String ph_en;
private String ph_am;
private String ph_other;
private String ph_en_mp3;
private String ph_am_mp3;
private String ph_tts_mp3;
private List<PartsBean> parts;
public String getPh_en() {
return ph_en;
}
public void setPh_en(String ph_en) {
this.ph_en = ph_en;
}
public String getPh_am() {
return ph_am;
}
public void setPh_am(String ph_am) {
this.ph_am = ph_am;
}
public String getPh_other() {
return ph_other;
}
public void setPh_other(String ph_other) {
this.ph_other = ph_other;
}
public String getPh_en_mp3() {
return ph_en_mp3;
}
public void setPh_en_mp3(String ph_en_mp3) {
this.ph_en_mp3 = ph_en_mp3;
}
public String getPh_am_mp3() {
return ph_am_mp3;
}
public void setPh_am_mp3(String ph_am_mp3) {
this.ph_am_mp3 = ph_am_mp3;
}
public String getPh_tts_mp3() {
return ph_tts_mp3;
}
public void setPh_tts_mp3(String ph_tts_mp3) {
this.ph_tts_mp3 = ph_tts_mp3;
}
public List<PartsBean> getParts() {
return parts;
}
public void setParts(List<PartsBean> parts) {
this.parts = parts;
}
public static class PartsBean {
/**
* part : adj.
* means : ["好的","优秀的","有益的","漂亮的,健全的"]
*/
private String part;
private List<String> means;
public String getPart() {
return part;
}
public void setPart(String part) {
this.part = part;
}
public List<String> getMeans() {
return means;
}
public void setMeans(List<String> means) {
this.means = means;
}
}
}
}
2.3-网络请求

private void httpPOST() {
API api = RetrofitManager.getRetrofit().create(API.class);
Map<String, String> params = new HashMap<>();//post请求时需要的参数
params.put("key", "value");
params.put("key", "value");
retrofit2.Call<textBean> resultcall = api.postResult(params);
resultcall.enqueue(new retrofit2.Callback<textBean>() {
@Override
public void onResponse(retrofit2.Call<textBean> call, retrofit2.Response<textBean> response) {
//网络请求成功
int httpcode = response.code();//获取返回的code,值为200时证明请求成功
textBean bean = response.body();//得到网络请求的结果
String wordname = bean.getWord_name();//获取bean里面需要的值
}
@Override
public void onFailure(retrofit2.Call<textBean> call, Throwable t) {
//网络请求失败
}
});
}
版权声明:本文为u010802275原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。