【发布时间】:2021-05-22 22:04:08
【问题描述】:
我正在尝试从后端服务获取信息,并且我正在使用 Retrofit 来获取响应。
这是我的改造单例类,我使用了一个随机 api 作为示例。我在启动服务时使用自己的。
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class BaseRetrofit {
private static Retrofit retrofitInstance = null;
private BaseRetrofit() {};
public static Retrofit getRetrofitInstance() {
if (retrofitInstance == null) {
retrofitInstance = new Retrofit.Builder()
.baseUrl("http://192.168.1.155:5000")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofitInstance;
}
}
在我的主课中,我初始化改造并拨打电话。
EndPoints myEndPoints = BaseRetrofit.getRetrofitInstance().create(EndPoints.class);
Call<List<JobItem>> jobs = myEndPoints.getJobs();
jobs.enqueue(new Callback<List<JobItem>>() {
@Override
public void onResponse(Call<List<JobItem>> call, Response<List<JobItem>> response) {
Log.d("SUCCESS", "LOADED JSON " + response.body().get(0).getJobType());
}
@Override
public void onFailure(Call<List<JobItem>> call, Throwable t) {
Log.d("ERROR", "ERROR LOADING JSON");
}
});
这是我的 EndPoints 界面。
import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
public interface EndPoints {
@GET("/getjobs/hardware")
Call<List<JobItem>> getJobs();
}
后端服务启动后需要的 URL 是 http://my_ip_address:5000/getjobs/hardware 例如http://192.168.1.155:5000/getjobs/hardware 这就是 JSON 格式
[
{
"date": "2021-05-22T23:45:27.8696343+02:00",
"host": "172.217.169.164",
"count": 3,
"packetSize": 100,
"jobPeriod": 120,
"jobType": "PING"
}
]
我不明白为什么调用总是转到 onFailure
【问题讨论】:
-
尝试从 Throwable 变量打印错误信息
-
@AmrDeveloper 它说网络安全策略不允许与 192.168.1.155 进行 CLEARTEXT 通信
-
是的,请尝试网络安全配置,它将解决您的问题,并在将来添加日志以打印消息,以便为您提供帮助
标签: java android retrofit call