java - 使用 Retrofit POST 的 Call<T> 类型的用途

标签 java android api retrofit retrofit2

http 请求和 java 以及改造的新手所以这可能是一个基本问题但是......

我已经成功地设置了对 Web 服务的 http 调用,但一方面我有点困惑,主要是基于我从教程/示例中看到的内容。

我见过很多这样的例子:

@POST("/api")
Call<Foo> savePost(@Body Foo foo);

我的理解是,参数“foo”将由所选转换器转换为 json,并作为 http 请求的主体传递。我不明白的是为什么Call的响应体类型也是Foo?这里是否假设响应也将反序列化为 Foo 对象?做出与您发送的正文相匹配的回应是常见的做法吗?我将其用于 GET 之类的操作,但并不真正明白为什么您会期望 POST 得到这样的响应。

最佳答案

先解释一下什么是Retrofit

中的call

是一个Retrofit Interface,可以通过execute同步调用,也可以通过enqueue异步调用。在任何一种情况下,它都可以随时取消。

void enqueue(Callback callback);

Asynchronously send the request and notify

Response execute() throws IOException;

Synchronously send the request and return its response.

在上面的示例中,您将从 savePost 获得的 Response 也是 Foo。它将反序列化为 Foo 对象。

它取决于用例,无论您是否必须获取 Foo 对象,如果您不想,您可以使用 ResponseBody 而不是 Foo

关于java - 使用 Retrofit POST 的 Call<T> 类型的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49744132/

相关文章:

java - 返回 Ljava.lang.Object 的字符串值

java - 如何从 Spark DataSet 中删除记录

java - 如何验证 map 中的集合

java - JTabbedPane边框颜色

android - TextView 上的缩放控件?

android - 无法解析符号 Horizo​​ntal DividerItemDecoration

python - facebook 图 API : Posting on page: permission issue

api - 无法使用 Vue 和 Codeigniter 进行本地 Api 调用

java - 在 Eclipse 中导出 Android 应用程序时,Proguard 似乎没有效果/无法运行

php - 无法通过 API 将文件从 Wordpress 插件上传到 symfony 后端服务器?