使用Retrofit POST调用<t>类型的目的

时间:2018-04-10 01:58:23

标签: java android api retrofit retrofit2

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

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

我已经看过很多类似的例子:

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

我的理解是这个论点“foo&#39;将被所选转换器转换为json,并作为http请求的主体传递。我不明白为什么Call的响应体型也是Foo?这里假设响应也会被反序列化为Foo对象吗?通常的做法是获得与您发送的身体相匹配的回复吗?我使用它来获得像GET这样的东西,但是并不真正遵循为什么你会期望像POST那样的响应。

1 个答案:

答案 0 :(得分:3)

首先让我解释一下 Retrofit

中的调用内容

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

  

void enqueue(回调回调);

Asynchronously send the request and notify
  

Response execute()抛出IOException;

Synchronously send the request and return its response.

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

它取决于用例,你必须得到Foo对象,如果你不想要你可以使用 ResponseBody 而不是Foo