我正在尝试使用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,但该字段似乎仍然被删除。有什么想法吗?