Android 改造响应返回空对象

Android Retrofit response returning null object

我在我的本地主机上使用 Django 构建了一个简单的 rest API,并尝试使用 android GETPOST retrofit。我已成功使用 GET 方法并在简单的 android TextView 中检索了 JSON 对象。但是当我尝试从远程 android 设备使用 POST 时,它确实 return 代码 500(称为内部服务器错误)。但是我的 POST 正在本地主机服务器上工作。我不明白为什么 POST 不工作,所以 response.body() return 向我的 Post class 发送了一个空对象。 这是我的 createPost(),我试图在本地主机 Django 服务器上 Post 一些东西:

private void createPost() {
        Post post = new Post("AAAAAAAA", "33");
        Call<Post> call = jsonPlaceHolderApi.createPost(post);

        call.enqueue(new Callback<Post>() {
            @Override
            public void onResponse(Call<Post> call, Response<Post> response) {
                if(!response.isSuccessful()){
                    tv.setText("Code" + response.code());
                }

                Post postResponse = response.body();
                String content = "";
                content += postResponse.getAlias() + "\n";
                content += postResponse.getName() + "\n\n";

                tv.append(content);
            }

            @Override
            public void onFailure(Call<Post> call, Throwable t) {
                tv.setText(t.getMessage());
            }
        });
    }

还有我的Postclass:

public class Post {
    @SerializedName("name")
    private String name;

    @SerializedName("alias")
    private String alias;

    public Post(String name, String alias) {
        this.name = name;
        this.alias = alias;
    }

    public String getName() {
        return name;
    }

    public String getAlias() {
        return alias;
    }
}

在我的 JsonPlaceHolderApi 接口中:

public interface JsonPlaceHolderApi {
    @GET("heroes")
    Call<List<Post>> getPosts();


    @POST("heroes")
    Call<Post> createPost(@Body Post post);
}

最后,在我的 logcat window 中,我得到了:

2020-07-02 21:47:31.858 25271-25271/com.asif.restapitestapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.asif.restapitestapp, PID: 25271
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.asif.restapitestapp.Post.getAlias()' on a null object reference
        at com.asif.restapitestapp.MainActivity.onResponse(MainActivity.java:79)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.run(ExecutorCallAdapterFactory.java:70)
        at android.os.Handler.handleCallback(Handler.java:761)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:156)
        at android.app.ActivityThread.main(ActivityThread.java:6517)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

如有任何建议,我们将不胜感激。提前致谢。

@POST 中添加一个额外的斜杠“/”解决了我的问题。

public interface JsonPlaceHolderApi {
    @GET("heroes")
    Call<List<Post>> getPosts();


    @POST("heroes/")
    Call<Post> createPost(@Body Post post);
}