来自retrofit+jackson转换器的Json响应



我想知道是否可以在成功响应时访问响应体作为字符串。这里我得到了成功:

   serviceOne.editionsGet(Device, new Callback<Editions>() {
            @Override
            public void success(Editions editions, Response response) {
               //here i get my results
            }
            @Override
            public void failure(RetrofitError error) {
                showErrorToast();
            }
        });

我想它可能是在身体反应在身体。如果是如何从中获取字符串主体

InputStream is = response.getBody().in();
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
String line;
try {
    br = new BufferedReader(new InputStreamReader(is));
    while ((line = br.readLine()) != null) {
        sb.append(line);
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (br != null) {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
String body = sb.toString()

应该可以访问response.getBody().toString()

editions应该是通过改造返回的对象,您可以自己实现

response为改造返回的响应体,其中包含响应体,可以使用getBody().toString()方法作为String访问。

使用JSONNode你可以得到json响应

  ApiInterface apiService =
            ApiClient.getClient().create(ApiInterface.class);
    Call<JsonNode> call = apiService.setDevice("application/json","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoX3Rva2VuIjoiMjY5NTUzNzIyOSIsImxvZ2luX2lkIjoiUlY1OTk3In0.NnPNRVUgaQnRBiza9yXM8FJf069Hb2ROtFw2mdlqK3w",rawJsonData());
    call.enqueue(new Callback<JsonNode>() {
        @Override
        public void onResponse(Call<JsonNode>call, Response<JsonNode > response) {
            Log.e("MAIN",response.body().toString());
          /*  Model model=response.body();
            model.getstatus();*/
        }
        @Override
        public void onFailure(Call<JsonNode>call, Throwable t) {
            // Log error here since request failed
            Log.e("MAIN", t.toString());
        }
    });

就用这个

 @POST("device")
Call<JsonNode> setDevice(@Header("Content-Type") String content_type, @Body Device parm);

最新更新