簡體   English   中英

如何使用REST將數組作為POST參數/有效載荷發送到Android中的Web服務

[英]How to send array as POST parameter/payload to webservice in Android using REST

我在Web服務中使用REST。 這是當我使用form content type (這是RAW類型)使用advance rest client測試Web服務時發送的示例有效負載/參數:

child_id%5B%5D=1&user_id=15&group_id=1&custom=&time=17%3A17%3A00&date=&child_id%5B%5D=2

其中RAW中的child_id%5B%5D在表單中表示child_id[] ,因此我發送了child_id array (在上述form中,最左和最右)。 這里的一切都很好。

當我嘗試將其實現到Android應用程序時,會發生問題,在該應用程序中,我使用HashMap這些有效負載/參數。 HashMap 不能在同一個鍵下存儲兩個值,所以我不能做類似的事情:

map.put("child_id[]", 1);
map.put("child_id[]", 2);

最新的看跌期權將覆蓋較早的看跌期權,因此Android應用程序將僅發送2作為child_id值。

我該怎么辦? 謝謝你的幫助

您可以按以下方式向數組添加索引。

map.put("child_id[0]", 1);
map.put("child_id[1]", 2);

您可以選擇一些解決方案。 最簡單的方法是創建一個類以充當參數的容器,並將其存儲在ArrayList

public class Parameter {
    private String key;
    private String value;
    // Getters, setters, other stuff.
}

然后將其存儲在ArrayList

您還可以使一個類充當各種參數構建器。 您可能會執行以下操作:

public class Parameters {
    private ArrayList<String> keys = new ArrayList<>();
    private ArrayList<String> values = new ArrayList<>();

    public void add(String key, String value) { ... }
    public ArrayList<String> getKeys() { ... }
    public ArrayList<String> getValues() { ... }
}

第二個選項需要更多的代碼,但增加了一些靈活性,應該使API更加簡潔。

另外,如您自己的評論中所述,您可以選擇使用Map<String, ArrayList<String>> 在上面的示例中,它也可以代替ArrayList很好地工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM