java - 改造:发送 POST 请求

标签 java android retrofit

这是我的 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)

我的请求有什么问题?

最佳答案

我猜你在方法声明中忘记了 @FormUrlEncoded 注释。应该是这样的:

@FormUrlEncoded
@POST("/api/geo/getLoc")
public void getFriendsLocation(@Field("Id") int Id, @Field("Number") String Number, @Field("FriendNumber") String FriendNumber, Callback<JsonElement> response);

关于java - 改造:发送 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32737390/

相关文章:

java - Neo4j 将两个不同的对象视为一个对象,因为它们扩展相同的父对象

android - 状态栏和导航栏上的 Google Now 渐变/阴影

java - 为什么我的改造后请求不起作用?

java - 使用改造将 json 解析为 POJO

android - Retrofit 2 不解析响应以防出错

java - DriverManager如何获取jdbc驱动类的实例

java - 在javacv中使用cvSetMouseCallback

java - 如果 CPU 使用率低、硬盘使用率低、内存使用率低,什么会减慢 Java 的速度?

java - RxJava Observable 到 Completable,如何避免 toBlocking()

android - setOnSeekbarChangeListener() 对我不起作用