Retrofit打印请求地址以及返回的数据内容

retrofit做网络请求特别爽,然而当我们用retrofit的时候发现不能直接log打印出网络请求返回的数据内容。比如说返回的是json数据,然而retrofit的Gson工厂早就自动把这些数据给解析掉了,无从获得这个原始数据(有时候用接口测试工具GetMan或者PostMan也不能获得完全准确的数据,笔者亲试过)

咋办?

借助HttpLoggingInterceptor类!

步骤

1.首先导入库

  implementation'com.squareup.okhttp3:okhttp:3.7.0'
   implementation 'com.squareup.retrofit2:retrofit:2.0.1'
   implementation 'com.squareup.retrofit2:converter-gson:2.0.1'
   implementation'com.squareup.okhttp3:logging-interceptor:3.4.1'

2.初始化HttpLoggingInterceptor

			/*
           **打印retrofit信息部分
            */
            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
                @Override
                public void log(String message) {
                    //打印retrofit日志
                    Log.e("RetrofitLog","retrofitBack = "+message);
                }
            });
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            OkHttpClient client = new OkHttpClient.Builder()//okhttp设置部分,此处还可再设置网络参数
                    .addInterceptor(loggingInterceptor)
                    .build();

3.retrofit请求部分(此部分只有一句.client(client)起了打印作用)

			 /*
            **retrofit请求部分
             */
         
            MyRequest.UserConfigPrimarykeyBean userConfigPrimarykeyBean=new MyRequest.UserConfigPrimarykeyBean();
            userConfigPrimarykeyBean.setPhone("13411982971");
            Retrofit retrofit=new Retrofit.Builder()
                    .baseUrl("http://www.xinius.cn:8084/appdemo/")
                    .client(client)//此client是为了打印信息
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            NetApi netApi=retrofit.create(NetApi.class);
            Call<HttpBack> call=netApi.request(userConfigPrimarykeyBean);
            Log.e(TAG, "发送请求 ");
            call.enqueue(new Callback<HttpBack>() {
                @Override
                public void onResponse(Call<HttpBack> call, retrofit2.Response<HttpBack> response) {
                    showResponse("请求发送成功,返回信息为: "+response.body().getData().getList().get(0).getConfigValue());
                }

                @Override
                public void onFailure(Call<HttpBack> call, Throwable t) {
                    showResponse("请求失败");
                    Log.e(TAG, "请求失败 " );
                }
            });
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Retrofit是一个基于OkHttp的RESTful风格的网络请求框架,它可以将一个HTTP API转换为Java接口。在Retrofit中,我们需要定义一个Java接口来描述HTTP API,然后通过Retrofit.create()方法来创建该接口的实例。下面是一个简单的示例: 假设我们有一个HTTP API,它的URL为https://example.com/api,请求方式为GET,请求参数为id和name,返回类型为JSON格式的字符串。那么我们可以定义一个Java接口来描述这个API: ```java public interface MyApi { @GET("/api") Call<String> getData(@Query("id") String id, @Query("name") String name); } ``` 在这个接口中,我们使用了@GET注解来指定请求方式和URL,使用@Query注解来指定请求参数,使用Call<String>来指定返回类型。 接下来,我们可以使用Retrofit.create()方法来创建该接口的实例: ```java Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://example.com") .build(); MyApi myApi = retrofit.create(MyApi.class); ``` 在这个示例中,我们首先创建了一个Retrofit实例,并通过baseUrl()方法指定了API的基础URL。然后,我们调用create()方法来创建MyApi接口的实例。 最后,我们可以使用该实例来发起网络请求: ```java Call<String> call = myApi.getData("123", "test"); call.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { String data = response.body(); // 处理返回数据 } @Override public void onFailure(Call<String> call, Throwable t) { // 处理请求失败 } }); ``` 在这个示例中,我们调用了MyApi接口的getData()方法来发起网络请求,并通过enqueue()方法来异步处理请求结果。在请求成功时,我们可以通过response.body()方法获取返回数据,在请求失败时,我们可以在onFailure()方法中处理请求失败的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值