一、添加依赖
implementation ‘com.squareup.retrofit2:retrofit:2.0.0-beta4’
implementation ‘com.squareup.retrofit2:converter-gson:2.0.0-beta4’
二、创建地址
public Retrofit getRetrofit(){
if(build == null){
//关闭自动重连
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.retryOnConnectionFailure(false);
//设置66秒超时
OkHttpClient client = builder.
connectTimeout(66, TimeUnit.SECONDS).
readTimeout(66, TimeUnit.SECONDS).
writeTimeout(66, TimeUnit.SECONDS).build();
//获取保存的IP地址
sharedPreferences = getSharedPreferences("IPData",MODE_PRIVATE);
String ip = sharedPreferences.getString("IP", "IP地址");
//创建接口IP连接
build = new Retrofit.Builder()
.client(client).baseUrl("http://" +ip +"/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return build;
}
//修改IP地址
public void reloadRetrofit(String url){
OkHttpClient.Builder builder = new OkHttpClient.Builder();
OkHttpClient client = builder.
connectTimeout(66, TimeUnit.SECONDS).
readTimeout(66, TimeUnit.SECONDS).
writeTimeout(66, TimeUnit.SECONDS).build();
build = new Retrofit.Builder().client(client).baseUrl("http://" + url+"/").addConverterFactory(GsonConverterFactory.create()).build();
}
三、创建接口
public interface MyService {
//创建函数调用接口,
@POST("接口地址(除去IP地址)")
Call<ResponseBody> loginPost(
@Query("接口字段1") String username,
@Query("接口字段2") String password
);
}
四、调用
MyService myService = getRetrofit().create(MyService.class);
Call<LoginResult> call = myService.loginPost(name,password);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
//HTTP状态码
Log.d("//","code:" + response.code());
//返回数据
ResponseBody body = response.body();
try {
//接口的返回数据,Json格式
Log.d("//","body:" + body.string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
//网络连接失败,进入此函数
t.printStackTrace();
}
});