当前位置: 首页 > 知识库问答 >
问题:

是否可以通过使用referfit通过Multipart发送字符串[]?

姜楷
2023-03-14

我正在开发一个应用程序,用户必须从列表中选择任意数量的国家,我必须通过多部分发送所选的名称。

@Headers({
    "Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
ArrayList<String> countries = CountryManager.getInstance().getSelectedCountryIds();
RequestBody requestBody;
LinkedHashMap<String, RequestBody> hashMap = new LinkedHashMap<>();

for(int i = 0; i < countries.size(); i++) {
    requestBody = RequestBody.create(MediaType.parse("text/plain"), countries.get(i));
    hashMap.put("countries["+i+"]", requestBody);
}
@Headers({
    "Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @PartMap() Map countries);

但是,在所有的尝试中,我都得到了错误retrofit.retrofiterror:Part body不能为null。

我还提到,ChangeLog for refitfit提到“new:Support iterable and array@part参数使用OKHTTP的multipartbody.part”,但是经过深入研究,我发现给定的示例相当混乱,以至于我不确定如何在代码中实现它,也找不到一个教程,甚至提到在多部分中发送数组。

难道这样的事情根本不可能吗?

共有1个答案

江棋
2023-03-14

我知道这个答案我迟到了。可以使用@query(“somekey[]”)以多部分形式发送arraylist。下面是一个工作的例子。

@Multipart
    @POST("./")
    Call<JsonElement> addSubEvent(@Part(EndAPI.USE_CASE) RequestBody useCase,
                                  @Query("event_id[]") ArrayList<String> event_id,
                                  @Query("user_id[]") ArrayList<String> user_id,
                                  @Query("name[]") ArrayList<String> name,
                                  @Query("date_time[]") ArrayList<String> date_time,
                                  @Part("token") RequestBody token,
                                  @Part MultipartBody.Part... profilePic);

希望它能帮助一些寻求答案的人。

 类似资料:
  • 问题内容: 我想使用JavaScript中的方法发送一些变量和一个字符串。 我从数据库中获取字符串,然后将其发送到PHP页面。我正在使用一个对象。 问题在于该字符串多次包含该字符,PHP中的数组将其视为多个键。 我试着更换与与功能,但它似乎并没有做任何事情。 有人可以帮忙吗? javascript代码和字符串如下所示: 字符串是: 问题答案: 您可以使用encodeURIComponent()。

  • 问题内容: 我需要在系统内进行一些自动测试。有些字段得到了验证,可能不能仅仅通过它来完成(然后,我正在做,它只写了一个字符串,而不是整个字符串。尝试通过字符串迭代sendKeys,也不起作用) 现在,我正在尝试通过javascript将值输入字段。有类似的东西: 但是,我不希望在executeScript中具有值,而在java变量中具有值,因此它看起来更好地工作。并得到一些随机化 我该怎么做? 问

  • 问题内容: 我有两个脚本,Server.py和Client.py。我有两个目标: 为了能够一次又一次地从客户端向服务器发送数据。 为了能够将数据从服务器发送到客户端。 这是我的Server.py: 这是我的客户: 该函数首次运行(“ e”进入服务器,我返回返回消息),但是如何使它一遍又一遍地发生(类似于聊天应用程序)?该问题在第一次之后开始。消息不会在第一次之后发送。我究竟做错了什么?我是pyth

  • 是否可以使用通用sql将超过4000个字符的字符串插入CLOB 新增列: 我必须用SQL插入它 请指教。

  • 我计划开发一个基于web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP,并将它们发送到XMPP服务器。 在这种基于聊天的应用程序中使用WebSocket看起来很有希望,因为事件(或响应)可以异步传递。但是,如果我使用WebSocket作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是的话,URI、动词(GET、POST…)是怎样的,websocket消息中

  • 问题内容: 我正在使用一个API,该API需要额外的安全性信息以及HTTP请求作为标头中的元信息发送。是否可以在XMLHttpRequest中设置它们? 问题答案: 是的,请参阅2012年12月6日当前XMLHttpRequest工作草案的“ setRequestHeader()方法” 。