1.配置权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
2.导入依赖
implementation 'com.squareup.retrofit2:retrofit:2.3.0'//眼下最新的版本号
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'//加入好这个依赖后我们就能够进行数据转换器的配置了。retrofit内部就会帮我们去转换json字符串为Java对象
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'io.reactivex:rxandroid:1.2.0'
3.创建一个接口类
public interface requestRF {
/**
* post 请求 没有用rxjava
* @param username 用户名
* @param password 密码
* @return
*/
@POST("Test/{Login}")
Call<Login> loadResponse(@Path("Login") String path,@Query("username") String username , @Query("password") String password);
/**
* 使用rxjava
* @param path
* @param username
* @param password
* @return
*/
@POST("Test/{Login}")
Observable<Login> loadResponse(@Path("Login") String path, @Query("username") String username , @Query("password") String password);
4.进行网络请求(不使用RXjava)
Retrofit retrofit = new Retrofit.Builder()
//域名
.baseUrl("http://" + "ip地址" + ":8080/")
//增加返回值为Gson的支持(以实体类返回)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava
.build();
requestRF requestRF = retrofit.create(requestRF.class);
Call<Login> call = requestRF.loadResponse("Login","liwei", "1234");
call.enqueue(new Callback<Login>() {
@Override
public void onResponse(Call<Login> call, Response<Login> response) {
Login login = response.body();
Toast.makeText(MainActivity.this,login.getMsg(),Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<Login> call, Throwable t) {
}
});
5进行网络请求(使用RXjava)
Retrofit retrofit = new Retrofit.Builder()
//域名
.baseUrl("http://" + "IP地址" + ":8080/")
//增加返回值为Gson的支持(以实体类返回)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava
.build();
requestRF requestRF = retrofit.create(requestRF.class);
Observable<Login> observable = requestRF.loadResponse("Login", "liwei", "1234");
observable.subscribeOn(Schedulers.io())//请求数据的事件发生在io线程
.observeOn(AndroidSchedulers.mainThread())//数据发生在主线程
.subscribe(new Observer<Login>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Login login) {
Toast.makeText(MainActivity.this, login.getMsg(), Toast.LENGTH_SHORT).show();
}
});//请求完成后在主线程更显UI
6.Login类
public class Login {
/**
* flag : true
* msg : 登录成功
* obj : {"result":"success"}
* array : ["sss9",null,null,null,null,null,null,null,null,null]
*/
private String flag;
private String msg;
private ObjBean obj;
private List<String> array;
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public ObjBean getObj() {
return obj;
}
public void setObj(ObjBean obj) {
this.obj = obj;
}
public List<String> getArray() {
return array;
}
public void setArray(List<String> array) {
this.array = array;
}
public static class ObjBean {
/**
* result : success
*/
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
}
网友评论