我们需要向需要动态多个字段的Web服务发送POST请求。
我的意思是,我们需要发送类似POST请求的内容:
question1='answer1'&question2='answer1'&question2='answer2'&question3='answer1'
其中question1和question2未在编译时设置。我们知道我们可以使用@FieldMap来使用动态字段,但是我们不能多次发送相同的字段。
这是我们的改造代码:
@FormUrlEncoded
@POST("/desafios/send/")
Observable<BaseServerMsgArray> postSubmitSurvey(@Field("customerId") Long customerId, @Field("upload_from_app") int uploadFromApp, @FieldMap HashMap<String, ArrayList<String>> hashFields);
有人可以帮助我们吗?
提前致谢,
答案 0 :(得分:6)
如下所示准备HashMap,只放置用户回答的那些任务。
HashMap<String, String> map = new HashMap<>();
map.put("question1", answer1);
map.put("question2", answer2);
map.put("question3", answer3);
更改您的改造如下
@FormUrlEncoded
@POST("/desafios/send/")
Observable<BaseServerMsgArray> postSubmitSurvey(@Field("customerId") Long customerId, @Field("upload_from_app") int uploadFromApp, @FieldMap HashMap<String, String> hashFields);
并将HashMap作为最后一个参数传递给
答案 1 :(得分:1)
您需要的是可以包含重复键的地图。不幸的是,标准Android中没有这样的地图。您可以使用此https://github.com/greenrobot/essentials/blob/master/java-essentials/src/main/java/org/greenrobot/essentials/collections/Multimap.java
如果这不起作用,请尝试手动将问题转换为String并发送格式正确的String。