2016-09-07 3 views
1

Я прочитал https://futurestud.io/blog/retrofit-2-log-requests-and-responses и сделал это.Как получить журнал json с помощью retrofit2 в студии Android?

HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); 
    logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
    logging.setLevel(HttpLoggingInterceptor.Level.HEADERS); 

    OkHttpClient client = new OkHttpClient(); 
    OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
    builder.interceptors().add(logging); 

    client = builder.build(); 

    Retrofit retrofit = new Retrofit.Builder() 
      .client(client) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .baseUrl(LoginApiService.Login_API_URL) 
      .build(); 

Но это возвращаемый результат как

09-08 05:12:24.219 25389-26089/com.example.keepair.myapplication D/OkHttp: --> POST http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/rest-auth/login/ http/1.1 
09-08 05:12:24.219 25389-26089/com.example.keepair.myapplication D/OkHttp: Content-Type: application/json; charset=UTF-8 
09-08 05:12:24.219 25389-26089/com.example.keepair.myapplication D/OkHttp: Content-Length: 46 
09-08 05:12:24.219 25389-26089/com.example.keepair.myapplication D/OkHttp: --> END POST 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: <-- 400 Bad Request http://ec2-52-78-138-143.ap-northeast-2.compute.amazonaws.com:8000/rest-auth/login/ (96ms) 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: Date: Wed, 07 Sep 2016 20:11:27 GMT 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: Server: WSGIServer/0.2 CPython/3.4.3 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: Vary: Accept 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: Allow: POST, OPTIONS 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: X-Frame-Options: SAMEORIGIN 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: Content-Type: application/json 
09-08 05:12:24.314 25389-26089/com.example.keepair.myapplication D/OkHttp: <-- END HTTP 

Это не достаточно.

Поскольку я использую RESTful API и тип JSon,

  1. Я хочу, чтобы проверить запрос JSON, что я отправить апи и JSON ответ, который приходит из API. Например, {"hi": "bye"}, полная информация о запросе json и ответе.
  2. Кроме того, я хочу точно знать, что отправил через заголовок из моего приложения.

Что мне делать?

ответ

1

Если вы посмотрите на коде HttpLoggingInterceptor.setLevel:

public HttpLoggingInterceptor setLevel(Level level) { 
    if (level == null) throw new NullPointerException("level == null. Use Level.NONE instead."); 
    this.level = level; 
    return this; 
} 

Вы увидите, что каждый раз, когда вы вызываете этот метод вы переопределение последнего вызова, так как это сделать:

logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
logging.setLevel(HttpLoggingInterceptor.Level.HEADERS); 

Устанавливает уровень до Level.HEADERS.
Что именно происходит в ваших журналах, вы видите только заголовки.
Просто удалите эту (2-ю) линию, и у вас будет Level.BODY, что и есть то, что вы ищете.