2017-07-04 77 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