繁体   English   中英

RXJava / RxAndroid的改进:Observable如何工作?

[英]Retrofit with RXJava/RxAndroid: How does the Observable work?

我只是从Retrofit和RXJava开始。 我有一个api调用,该调用上传了一个文件并返回一个http响应,该响应的主体为空,状态为200(以防万一)。 我将其翻译为:

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

在这里读到,对于没有RxJava的空响应,最好的方法是使用Void。 RXJava不行吗? 我必须实现适配器吗?

编辑1:

这是需要有一个CallAdapterFactory加入到改造作为回答说这里 我还必须转换File参数。 尽管如此,错误仍然存​​在。

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

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

我想您的问题是您不能将File作为参数传递,应该将RequestBody参数作为

RequestBody.create(mediaType, file);

因此,改造电话的签名应如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM