Log.d("Network", "Network request sent");
用于调试级别的日志记录。
以下是关于Android网络Log的详细介绍:
在Android中,可使用ConnectivityManager
类获取网络连接状态,但有时需更详细信息判断网络连接情况(如是否有可用连接、连接类型等),此时可查看系统提供的log,通过Log
类输出log信息,关注以下关键字判断网络连接状态:
关键字 | 说明 |
ConnectivityService | 用于表示网络连接状态的变化。 |
1、添加依赖:在Android项目的build.gradle
文件中添加OkHttp依赖项,如implementation 'com.squareup.okhttp3:okhttp:4.9.3'
,引入OkHttp库以便进行网络请求。
2、创建自定义拦截器:实现一个自定义的拦截器,用于输出网络请求和响应的日志。
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class LoggingInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
long t1 = System.nanoTime();
System.out.println(String.format("Sending request %s on %s%n%s",
request.url(), chain.connection(), request.headers()));
Response response = chain.proceed(request);
long t2 = System.nanoTime();
System.out.println(String.format("Received response for %s in %.1fms%n%s",
response.request().url(), (t2 t1) / 1e6d, response.headers()));
return response;
}
}
3、配置OkHttp客户端:将自定义拦截器添加到OkHttp客户端中,使客户端在发送请求时记录日志。
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
1、抓取日志:Android设备抓取的日志中,netlog
文件夹包含.cap
文件,可使用Wireshark工具查看网络日志。
2、分析DNS:使用Wireshark分析网络日志时,若要检查DNS解析是否正常,可按以下步骤操作:
识别DNS查询和回应。
使用过滤器udp.port == 53
查看DNS相关数据包。
1、问题:如何确定网络请求是否成功?
解答:可通过查看OkHttp自定义拦截器输出的日志中响应的状态码来判断,若状态码为2xx,则表示请求成功;若为其他状态码,则表示请求失败,也可查看响应体内容是否符合预期。
2、问题:为什么需要使用自定义拦截器来记录网络日志?
解答:使用自定义拦截器可以方便地在请求发送前和响应接收后插入自定义逻辑,记录详细的请求和响应信息,包括请求头、请求体、响应头、响应体等,有助于开发者更全面地了解网络请求的情况,便于调试和性能优化,而系统默认的网络日志可能无法提供如此详细和灵活的信息。