gpt4 book ai didi

android - 用 RXJava/RxAndroid : How does the Observable work? 改造

转载 作者:行者123 更新时间:2023-11-29 19:50:30 25 4
gpt4 key购买 nike

我刚开始使用 Retrofit 和 RXJava。我有一个 api 调用,它上传一个文件并返回一个空主体和状态 200 的 http 响应(以防一切正常)。我将其翻译为 retrofit 为:

 @PUT("/in")
Observable<Void> uploadFile(@Body ResponseBody file);

但是当使用 mApi.uploadFile(f) 时,我得到一个异常:

Caused by: java.lang.IllegalArgumentException: Could not locate call 
adapter for rx.Observable<java.lang.Void>. Tried:
* retrofit.ExecutorCallAdapterFactory
at retrofit.Retrofit.nextCallAdapter(Retrofit.java:207)
at retrofit.Retrofit.callAdapter(Retrofit.java:175)
at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45)

我读了here对于没有 RxJava 的空响应,最好的做法是使用 Void。这不适用于 RXJava?我必须实现适配器吗?.

编辑 1:

如答案 here 中所述,有必要将 CallAdapterFactory 添加到改造中.我还必须转换 File 参数。尽管如此,错误仍然存​​在。

在我弄清楚如何将请求映射到改造后的第二步是链接多个文件上传。我该怎么做?

也欢迎链接到有关使用 RXJava + Retrofit 或示例的高级教程。

最佳答案

我猜你的问题是你不能传递一个文件作为参数,你应该传递一个 RequestBody 参数作为

RequestBody.create(mediaType, file);

因此改造调用的签名应如下所示:

@PUT("/in")
Observable<Void> uploadFile(RequestBody file);

关于android - 用 RXJava/RxAndroid : How does the Observable work? 改造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187051/

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