当前位置: 首页 > 知识库问答 >
问题:

IllegalArgumentException:“Retrofit2.response”不是有效的响应正文类型。你是说回应体吗?

施俊明
2023-03-14
    /**
     * Synchronous method to register GCM Token on Backend Server
     *
     * @return true, in case of success response, false otherwise.
     */
    public boolean registerGCMToken()
    {
        ...

        try
        {
            Call<Response> call = mService.registerGCMToken(sessionId, this.ADDITIONAL_QUERY);
            final Response response = call.execute().body(); // <<< Error points here
            final DefaultResponse defaultResponse = DefaultResponse.newInstance(response);
            return defaultResponse.isSuccess();
        }
        catch (IOException ignored)
        {

        }

        return false;
    }
    @GET("my/url")
    Call<Response> registerGCMToken(@Header(Constant.HEADER_WILDCARD) String accessToken,
                    @QueryMap Map<String, String> additionalQuery);

我的newInstance方法如下所示:

    public static final DefaultResponse newInstance(final Response response)
    {
        final DefaultResponse defaultResponse = new DefaultResponse();
        if (response != null)
        {
            defaultResponse.status = response.code();
        }

        return defaultResponse;
    }

因此,正如您所看到的,我需要知道什么是HTTP状态代码。通过将responsegeneric更改为responsebody,我无法获得http状态代码。你有什么建议?

共有1个答案

步弘和
2023-03-14

我在阅读你建议的帖子的答案时得到的是,而不是这样:

@GET("my/url")
    Call<Response> registerGCMToken(@Header(Constant.HEADER_WILDCARD) String accessToken,
                    @QueryMap Map<String, String> additionalQuery);

尝试:

@GET("my/url")
    Call<ResponseBody> registerGCMToken(@Header(Constant.HEADER_WILDCARD) String accessToken,
                    @QueryMap Map<String, String> additionalQuery);

因为您得到的是ResponseBody,而不是Response:

        final Response response = call.execute().body();
 类似资料:
  • 我也得到了200的回复,但没有身体的数据

  • 我正在使用reverfit2调用一个微服务,它在PUT方法上返回一个200和一个空的响应体。但是,reverfit 2似乎无法处理这一点,并且在“enqueue”中转到onFailure分支 @override public void onFailure(Call Call,Throwable t){ 以下是日志: 有人知道这是什么原因造成的吗?因为请求被成功地提供了(见上文)。

  • 我想建立一个简单的演示项目来学习如何使用Restygwt。我遵循了这个教程:https://ronanquillevere.github.io/2014/03/16/gwt-rest-app.html到目前为止,我在我的客户端上得到了这个:在我的SearchPresenter中,当我单击一个按钮时,方法search chBook(String isbn)会被触发 我的书店客户端看起来像这样: 我的

  • 我正在创建两个不同的数据源的Spring引导应用程序。我已经为单独的数据库创建了配置文件。对于每个数据库,实体在不同的包中,模型在不同的包中。当我跑的时候 mvn清洁安装 它正确地创建数据库和所有表。但是在创建存储库时总是失败。下面我提供所有必要的细节: 主类 Application.Properties 有人能帮忙吗?我缺少了什么参数,或者我在这里做错了什么?提前感谢!

  • Web应用程序根据许多参数以多种方式响应用户的请求。 本章将详细介绍Laravel Web应用程序中的响应。 基本回应 Laravel提供了几种不同的方式来返回响应。 响应可以从路由或从控制器发送。 可以发送的基本响应是简单的字符串,如下面的示例代码所示。 此字符串将自动转换为适当的HTTP响应。 例子 (Example) Step 1 - 将以下代码添加到app/Http/routes.php文

  • 使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png