Retrofit返回404 respone代码

时间:2017-08-31 09:53:22

标签: android retrofit2

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响应代码。上述代码有什么问题吗?  提前谢谢。

3 个答案:

答案 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。