改装POST请求会删除所有参数

时间:2019-12-09 04:56:27

标签: android node.js rest post retrofit2

我正在尝试使用RetroFit将用户名,分数和日期传递给Node服务器,以传递给数据库。我有多个GET请求正在工作。当我尝试发出POST请求时,似乎会丢弃所有传入的参数。甚至更奇怪:我最近实现了RetroFit POST却没有此问题,并且这次的代码似乎并没有太大不同。

无论如何,这是我的相关代码段:

RetroFit.java

public interface RetroFit {

    ...

    @POST("addUserToDatabase")
    @FormUrlEncoded
    Call<JsonObject> addUserToDatabase(
            @Field("username") String username,
            @Field("numberCorrect") int numberCorrect,
            @Field("dayOfTheWeek") String dayOfTheWeek
    );

    Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    //The below can be done outside the class

    public static final Retrofit retro = new Retrofit.Builder()
            .baseUrl("http://myurl:portnumber")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

}

ResultsActivity

Call<JsonObject> call = this.retroFit.addUserToDatabase(
                username,
                numberOfCorrectAnswers,
                dayOfTheWeek);
        call.enqueue(new Callback<JsonObject>() {
            @Override
            public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
                Log.d("addUsersToDatabase", response.body().toString());
            }

            @Override
            public void onFailure(Call<JsonObject> call, Throwable t) {
                Log.d("addUsersToDatabase", "FAILED", t);
            }
        });

注意:用户名,numberOfCorrectAnswers和dayOfTheWeek均在此之前生成。我没有遇到任何类型错误。

我从应用程序中获得了这个JsonObject: {"_id":"5dedd080c3bf4116716162e5"}

PostMan的这个JsonObject发出了相同的请求:

{
    "username": "user",
    "numberCorrect": 3,
    "dayOfTheWeek": "Sunday",
    "_id": "5dedd3cbc3bf4116716162e6"
}

我尝试将其简化为仅包含一个字段的较小的POST,但该字段似乎仍然被删除。有什么想法吗?

0 个答案:

没有答案