Dio 实例在获取 API 端点时没有 return 响应
Dio instance doesnt return a response when getting a API endpoint
我正在尝试从 Api 中获得响应,但 return 中没有响应。
Dio 实例在获取 API 端点
时没有 return 响应
import 'package:dio/dio.dart';
class DioService {
static const baseUrl = "https://dictionaryapi.dev/";
Dio dio = Dio();
DioService() {
initializeInterceptors();
}
initializeInterceptors() {
dio.interceptors.add(InterceptorsWrapper(onError: (e, _) {
print(e.message);
}, onRequest: (r, _) {
print(r.method);
print(r.path);
}, onResponse: (r, _) {
print(r.data);
}));
}
Future<Response> getRequest(String endPoint) async {
Response response;
try {
response = await dio.get(endPoint);
print(response.toString());
} on DioError catch (e) {
print(e);
throw Exception(e.message);
}
return response;
}
}
控制台:
I/flutter (17735): GET
I/flutter (17735): https://api.dictionaryapi.dev/api/v2/entries/en_US/dog
您的拦截器正在将请求路由到黑洞中。
每个拦截器方法的第二个参数是一个处理程序。为了继续请求,拦截器必须将(可能修改的)请求选项传递给处理程序,错误和响应处理程序也是如此。
dio.interceptors.add(InterceptorsWrapper(onError: (e, handler) {
print(e.message);
handler.next(e);
}, onRequest: (r, handler) {
print(r.method);
print(r.path);
handler.next(r);
}, onResponse: (r, handler) {
print(r.data);
handler.next(r);
}));
特别是对于日志记录,请注意 Dio 提供了 LogInterceptor
class,因此您无需自己动手。
我正在尝试从 Api 中获得响应,但 return 中没有响应。 Dio 实例在获取 API 端点
时没有 return 响应import 'package:dio/dio.dart';
class DioService {
static const baseUrl = "https://dictionaryapi.dev/";
Dio dio = Dio();
DioService() {
initializeInterceptors();
}
initializeInterceptors() {
dio.interceptors.add(InterceptorsWrapper(onError: (e, _) {
print(e.message);
}, onRequest: (r, _) {
print(r.method);
print(r.path);
}, onResponse: (r, _) {
print(r.data);
}));
}
Future<Response> getRequest(String endPoint) async {
Response response;
try {
response = await dio.get(endPoint);
print(response.toString());
} on DioError catch (e) {
print(e);
throw Exception(e.message);
}
return response;
}
}
控制台:
I/flutter (17735): GET
I/flutter (17735): https://api.dictionaryapi.dev/api/v2/entries/en_US/dog
您的拦截器正在将请求路由到黑洞中。
每个拦截器方法的第二个参数是一个处理程序。为了继续请求,拦截器必须将(可能修改的)请求选项传递给处理程序,错误和响应处理程序也是如此。
dio.interceptors.add(InterceptorsWrapper(onError: (e, handler) {
print(e.message);
handler.next(e);
}, onRequest: (r, handler) {
print(r.method);
print(r.path);
handler.next(r);
}, onResponse: (r, handler) {
print(r.data);
handler.next(r);
}));
特别是对于日志记录,请注意 Dio 提供了 LogInterceptor
class,因此您无需自己动手。