所以我需要用这种格式发送一个api请求
{
“访问密钥”:“6477848488CCHFC47488”,
“人”:{
“名字”:“约翰”,
“姓氏”:“亨利”,
“电子邮件”:“[email protected]
}
}
我创建了一个对象

public class Person {
    public String first_name = "";
    public String last_name = "";
    public String email = "";
}

在我的界面中
@FormUrlEncoded
@POST("/send_details")
void sendDetails(@Field("person") Person person, @Field("access_key") String accessKey, Callback<User> cb);

最后在我的活动中,我有下面的代码来调用send details方法
Person person = new Person("John", ":"Henry, "[email protected]");
  aApi.sendDetails(person, ACCESS_KEY, new Callback<User>() {
     @Override
        public void success(User user, Response response) {

        }

        @Override
        public void failure(RetrofitError error) {

        }
    });
  }

我得到一个500内部服务器错误。我刚从截击改为改装。希望能得到帮助。

最佳答案

尝试使用@Body注释而不是@Field并传递单个Body对象。

class DetailsBody {
    @SerializedName("access_key")
    public String accessKey;
    public Person person;

    public DetailsBody(String accessKey, Person person) {
        this.accessKey = accessKey;
        this.person = person;
    }
}

然后:
@POST("/send_details")
void sendDetails(@Body DetailsBody body, Callback<User> cb);

(无@FormUrlEncoded

07-24 20:51