java - android中retrofit2 api请求的响应主体始终为空

标签 java android retrofit2

我正在使用android studio开发一个android应用程序,并且我有一个rest api,它是我用spring开发的。每次我使用改造从服务器检索某些内容时,我都会得到 null body。即使我的服务器发送数据。

我尝试过 ScalarsConverterFactory 和 GsonConverterFactory,我也尝试过将调用类型更改为 String、ResponseBody 和 JsonObject

我在这里打电话:

Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("my_url")
                .build();

ServerService service = retrofit.create(ServerService.class);
Call<List<String>> call = service.getUserAlbums("addcookie");
Response<List<String>> response = call.execute();

服务器服务.java

@GET("/cmu/getUserAlbums")
Call<List<String>> getUserAlbums(@Header("Cookie") String cookie);

这是服务器中的代码

@RequestMapping(value = "/getUserAlbums", method = RequestMethod.GET)
    @ResponseStatus(HttpStatus.FOUND)
    public List<String> getUserAlbums() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        User user = userService.getUserByUsername(auth.getName());
        return userService.getUserByUsername(user.getUsername()).getAlbums();

    }

我希望得到一个字符串形式的列表,我得到了 HTTP 代码 302,在我的控制台中我可以看到服务器返回了列表,但我无法在 Android 上接收。

最佳答案

我解决了这个问题,基本上,如果代码在 200 - 299 之间,改造就会认为响应成功,因此当它返回 302 时,我正在寻找的响应正文位于 .errorBody() 中。

关于java - android中retrofit2 api请求的响应主体始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55930182/

相关文章:

java - Webfilter 只能在第二个响应中登录用户(记住我)

java - hibernate 错误: unexpected AST node

java - 初始化错误无法在 Gradle 构建中调用合约测试

java - Weblogic应用程序提示缺少某些类,如何调试?

android - 移动网络应用程序可以阻止 Android 手机屏幕锁定吗?

javascript - 将图像文件附加到表单数据 - Cordova/Angular

android - 如何在服务生成器类的改造中添加 http 拦截器

c# - Android for MonoDevelop on Ubuntu

java - 在 Kotlin 中改造单例

java - Retrofit2在jvm上抛出Android相关的RuntimeException