我正在使用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/