2017-07-04 255 views
2

我需要使用retrofit2在GET请求的主体中发送类型为User[]的数组。这是最后的有效载荷必须是什么样子:Retrofit2 - 在GET请求中发送类型T的数组

body: { 
    "data_id": 1, 
    "data_provider": "string_value", 
    "users": [ 
    { 
     user_id: 1, 
     name: 'name' 
    }, 
    { 
     user_id: 1, 
     name: 'name' 
    }, 
    ... 
    ] 
} 

当前API的实现看起来像这样:

@GET("api/users/submit.json") 
Call<UserData> submitData(@Query("data_id") int data_id, @Query("data_provider") String data_provider, @Query("users[]") User[] users); 

的ArrayList代码:

//Converting the ArrayList<User> usersList to an array 
User[] userArray = usersList.toArray(new User[0]); 
//The userArray is passed to the retrofit API along with the other request values (data_id, data_provider) 

在登录的改装要求,data_iddata_provider正确发送除了f或用户数组。用户阵列看起来像这样:

API /用户/ submit.json data_id = 1个& data_provider =测试&用户[] = [email protected]

如何能我在GET请求正文中发送User类型的数组?

+0

尝试将用户[]转换为JSON数组,然后将请求发送到服务器。 –

+0

JSONArray userArray = new JSONArray(userArray); –

+0

@RakshitNawani这需要min API 19. Mine是16.我不想把它提高到19 – Dinuka

回答

1

对于这种有效载荷: -

body: { 
    "data_id": 1, 
    "data_provider": "string_value", 
    "users": [ 
    { 
     user_id: 1, 
     name: 'name' 
    }, 
    { 
     user_id: 1, 
     name: 'name' 
    }, 
    ... 
    ] 
} 

的API结构应该是这样的: -

public class ReqBody{ 
    int data_id; 
    String data_provider; 
    User[] users; 
} 

@POST("api/users/submit.json") 
Call<UserData> submitData(@Body ReqBody reqBody); 

如果你的要求是别的东西,请附上正确的细节API为你想要一些点发送data_iddata_provider在查询参数和您已将它们定义为正文的一部分的结构中。 如果他们是身体的一部分,那么它应该是这样的工作。

+0

好的试试这个。我会在之后回复。 – Dinuka

+0

我试过这个,但改造不发送请求根本没有发送。你确定这适用于GET吗?我认为这只适用于POST – Dinuka

+0

好吧,你确定你的API是GET的,因为你无法通过GET请求传递正文。 – Avi

2

您可以请求机身采用@Body注释

大致会是这样的用户发送对象:

你的用户模型

class User { 
} 

用户级存储用户

名单
class RequestBody { 
int data_id; 
String data_provider; 
List<User> users; 
} 

@POST("api/users/submit.json") 
Call<UserData> submitData(@Body RequestBody requestbody); 

您可以在这里详细了解更多关于它的信息:

https://futurestud.io/tutorials/retrofit-send-objects-in-request-body

+1

您确定在Query param中的boss data_id和data_provider作为结构吗?他提供的初始显示它应该是body的一部分吗?除此之外,你的回答是正确的。 – Avi

+0

很酷,感谢您指出配偶。我现在修好了......干杯 – Ani

+0

我试过这个,但是改造不发送请求根本没有发送。你确定这适用于GET吗?我认为它只适用于POST – Dinuka