在Android中,来自Retrofit2 API请求的响应正文始终为空

时间:2019-05-01 00:16:00

标签: java android retrofit2

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

我已经尝试过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();

ServerService.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,在控制台中,我可以看到服务器返回了List,但是我无法在android上接收到。

1 个答案:

答案 0 :(得分:1)

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