首先会出现这个错误,经过百度查询很多文章都是说的网络权限的问题,在排查不是权限的问题是经过一番折腾后终于解决了问题。
OS Error: No address associated with hostname, errno = 7
以下代码在dio3.0的时候不会出现问题,但是4.0的时候会报错
dio.interceptors.add(InterceptorsWrapper(
onRequest:(RequestOptions options, RequestInterceptorHandler type){
Map<String, dynamic> headers = options.headers;
String tokenHead = SpUtil.getString("tokenHead");
String toKen = SpUtil.getString("token");
if(toKen!=null && options.path.indexOf('api/v1/login')==-1 && options.path.indexOf('loginByWeChat')==-1 && options.path.indexOf('aliyuncs.com')==-1 && options.path.indexOf('weixin.qq.com')==-1){
headers[tokenHead] = toKen;
}
// 在请求被发送之前做一些事情
print('请求头部:${options.headers}');
return options;
},
onResponse:(Response response, ResponseInterceptorHandler type) {
// 在返回响应数据之前做一些预处理
return response;
},
onError: (DioError e, ErrorInterceptorHandler type) {
// 当请求失败时做一些预处理
return e;
}
));
修改后的代码
dio.interceptors.add(InterceptorsWrapper(
onRequest:(RequestOptions options, RequestInterceptorHandler handler){
Map<String, dynamic> headers = options.headers;
String tokenHead = SpUtil.getString("tokenHead");
String toKen = SpUtil.getString("token");
if(toKen!=null && options.path.indexOf('api/v1/login')==-1 && options.path.indexOf('loginByWeChat')==-1 && options.path.indexOf('aliyuncs.com')==-1 && options.path.indexOf('weixin.qq.com')==-1){
headers[tokenHead] = toKen;
}
// 在请求被发送之前做一些事情
handler.next(options);
},
onResponse:(Response response, ResponseInterceptorHandler handler) {
// 在返回响应数据之前做一些预处理
handler.next(response);
},
onError: (DioError e, ErrorInterceptorHandler handler) {
// 当请求失败时做一些预处理
handler.next(e);
}
));
}
希望以上代码可以给你帮助,也警醒自己在日常编程的过程中加强严谨性。