gpt4 book ai didi

android - 是否可以使用 Retrofit 通过 Multipart 发送 String[]?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:33 25 4
gpt4 key购买 nike

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

我没有将任何文件与 String[] 一起上传,但是如果不是多部分就没有上传信息的途径,而且我对 Web 服务器的运行方式没有任何说法。

我试图简单地将它作为数组、ArrayList 和 JsonArray 发送:

@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);

我也尝试过 this solution ,但我要么误解了它,要么它不起作用。这是我尝试使用的代码:

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 must not be null。

我还提到改造的 ChangeLog 提到“新:使用 OkHttp 的 MultipartBody.Part 支持可迭代和数组 @Part 参数”,但经过一些挖掘后,我发现给定的示例非常困惑,以至于我不确定如何在我的代码中实现它,并且找不到甚至提到在多部分中发送数组的教程。

这样的事情是不可能的吗?

最佳答案

我知道我迟到了这个答案。您可以使用 @Query("someKey[]") 在多部分中发送数组列表。这是工作示例。

@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);

希望对寻求答案的人有所帮助。

关于android - 是否可以使用 Retrofit 通过 Multipart 发送 String[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com