我试图在Android应用程序中使用Retrofit 2实现以下curl请求(示例):
POST https://176.67.241.133/server/rest/v1/bulletins
-H "Content-Type: application/x-www-form-urlencoded"
--data "access_token=4cad3a733af72e4daf6550c7ace1a3886637747a&data[passport]=2212696912&data[bulletins][0][bulletin_id]=1&data[bulletins][0][value]=122222222&data[bulletins][1][bulletin_id]=2&data[bulletins][1][value]=222222222"
可以通过以下代码在js中执行:
$.post('/server/rest/v1/bulletins',
{
access_token: '83126ef617d83ee8843f8d49d94ab59bd349cf6d',
data: {
passport: '2212696911',
bulletins: [
{bulletin_id: 1, value: '122222222'},
{bulletin_id: 2, value: '222222222'}
]
}
},
function (result) {
$('#bulletin').html(JSON.stringify(result));
});
我已经尝试了下面的代码,其中Voting是具有适当数据结构的json模型,但它被转换为错误的请求。
@FormUrlEncoded
@POST("/server/rest/v1/bulletins")
Observable<Object> postBulletins(@Field("access_token") String accessToken, @Field("data") Voting votingData);
请你帮忙写出正确的请求吗?
答案 0 :(得分:1)
我认为问题是@Field注释应该与String对象一起使用。您可能应该将数据发布到pojo中并使用@Body注释发布它。我用http://pojo.sodhanalibrary.com/来生成快速的pojo。创建对象后,您可以使用
发布它 @POST("/server/rest/v1/bulletins")
Observable<Object> postBulletins(@Body YourPojoClassName
yourPojoClass);
你的pojo看起来像这样:
public class YourPojoClassName{
String access_token;
Data data;
public static class Data{
int passport;
Bulletins[] bulletins;
public static class Bulletins{
int bulletin_id;
int value;
}
}
}