Logging with Retrofit 2

前端 未结 21 1666
春和景丽
春和景丽 2020-11-22 07:33

I\'m trying to get the exact JSON that is being sent in the request. Here is my code:

OkHttpClient client = new OkHt         


        
21条回答
  •  庸人自扰
    2020-11-22 07:56

    I met the thing as you and I tried to ask the author of the book Retrofit: Love working with APIs on Android (here is the link) (nope! I am not making some ads for them....but they are really nice guys :) And the author replied to me very soon, with both Log method on Retrofit 1.9 and Retrofit 2.0-beta.

    And here is the code of Retrofit 2.0-beta:

    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();  
    // set your desired log level
    logging.setLevel(Level.BODY);
    
    OkHttpClient httpClient = new OkHttpClient();  
    // add your other interceptors …
    
    // add logging as last interceptor
    httpClient.interceptors().add(logging);  // <-- this is the important line!
    
    Retrofit retrofit = new Retrofit.Builder()  
       .baseUrl(API_BASE_URL)
       .addConverterFactory(GsonConverterFactory.create())
       .client(httpClient)
       .build();
    

    This is how to add logging method with the help of HttpLoggingInterceptor. Also if you are the reader of that book I mentioned above, you may find that it says there is not log method with Retrofit 2.0 anymore -- which, I had asked the author, is not correct and they will update the book next year talking about it.

    // In case you are not that familiar with the Log method in Retrofit, I would like to share something more.

    Also should be noticed that there are some Logging Levels you could pick. I use the Level.BODY most of the time, which will give some thing like this:

    You can find almost all the http staff inside the picture: the header, the content and response, etc.

    And sometimes you really don't need all the guests to attend your party: I just want to know whether it's successfully connected, that internet call is successfully made within my Activiy & Fragmetn. Then you are free to use Level.BASIC, which will return something like this:

    Can you find the status code 200 OK inside? That is it :)

    Also there is another one, Level.HEADERS, which will only return the header of the network. Ya of course another picture here:

    That's all of the Logging trick ;)

    And I would like to share you with the tutorial I learned a lot there. They have a bunch of great post talking about almost everything related to Retrofit, and they are continuing updating the post, at the same time Retrofit 2.0 is coming. Please take a look at those work, which I think will save you lots of time.

提交回复
热议问题