gpt4 book ai didi

android - Retrofit 2中如何实现复杂数据的POST请求

转载 作者:行者123 更新时间:2023-11-30 00:34:29 27 4
gpt4 key购买 nike

我正在尝试使用 Retrofit 2 在 android 应用程序中实现以下 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));
});

我尝试了下面的代码,其中投票是具有适当数据结构的 json 模型,但它被转换为错误的请求。

@FormUrlEncoded
@POST("/server/rest/v1/bulletins")
Observable<Object> postBulletins(@Field("access_token") String accessToken, @Field("data") Voting votingData);

你能帮忙写下正确的请求吗?

最佳答案

我认为问题在于 @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;
}
}
}

关于android - Retrofit 2中如何实现复杂数据的POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com