ApiClient.java类 -
public class ApiClient {
public static final String BASE_URL = "https://jsonplaceholder.typicode.com/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
界面 -
public interface ApiInterface {
@POST("posts/1")
Call<ModelClass> savePost();
}
on onCreate of activity -
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
Call<ModelClass> call = apiService.savePost();
call.enqueue(new Callback<ModelClass>() {
@Override
public void onResponse(Call<ModelClass>call, Response<ModelClass> response) {
Log.i(TAG,"response is "+response.body());
Log.i(TAG,"response code is "+response.code());
}
@Override
public void onFailure(Call<ModelClass>call, Throwable t) {
// Log error here since request failed
Log.i(TAG, t.toString());
}
});
我在Gradle中包含的依赖项 -
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
为什么改造会返回404响应代码。上述代码有什么问题吗? 提前谢谢。
答案 0 :(得分:1)
兄弟你的代码很好用api问题。 当我在POSTMAN上用post方法点击你的api时它显示404 Not Found所以请检查你的服务器
但它没有显示空的json对象作为正文,所以可能有参数丢失,你使用404状态显示这是一个不好的做法显示404只有当这个api不存在时使用其他错误代码如409,422这个行动类型,以便您更清楚地了解回应
答案 1 :(得分:0)
您应该检查端点是否正确,或者我的BASE_URL是相同问题的URL,但端点不正确,那么我会收到404错误。
希望这会有所帮助。
答案 2 :(得分:0)
您可以在邮递员中查看状态服务器。 通常body里面有响应,但是状态可能还是404,所以会是errorbody而不是response.body。