这是我的POST请求的声明:
@POST("/api/geo/getLoc")
public void getFriendsLocation(@Field("Id") int Id, @Field("Number") String Number, @Field("FriendNumber") String FriendNumber, Callback<JsonElement> response);
这是我尝试发送和处理此请求的方式:
String ENDPOINT = "http://52.88.**.***";
FriendModel ff = new FriendModel();
ff.setFriendNumber("380935275259");
ff.setId(516);
ff.setNumber("380936831127");
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.build();
WayfAPI api = adapter.create(WayfAPI.class);
api.getFriendsLocation(ff.getId(), ff.getNumber(), ff.getFriendNumber(), new Callback<JsonElement>() {
@Override
public void success(JsonElement jsonElement, Response response) {
String strObj = jsonElement.toString();
}
@Override
public void failure(RetrofitError error) {
}
});
错误:
retrofit.RetrofitError: WayfAPI.getFriendsLocation: @Field parameters can only be used with form encoding. (parameter #1)
我的要求出了什么问题?
答案 0 :(得分:3)
我猜您在方法声明中忘记了@FormUrlEncoded
注释。它应该是这样的:
@FormUrlEncoded
@POST("/api/geo/getLoc")
public void getFriendsLocation(@Field("Id") int Id, @Field("Number") String Number, @Field("FriendNumber") String FriendNumber, Callback<JsonElement> response);