Dart 如何在flatter中记录http请求
我正在用flatter开发一个应用程序,并在dart中使用默认http包进行API调用。我们如何记录正在进行的所有http请求。http或中间件中是否有任何内置功能可用于此功能?似乎没有内置的方法来记录请求。但是,您可以实现自己的日志请求:Dart 如何在flatter中记录http请求,dart,flutter,Dart,Flutter,我正在用flatter开发一个应用程序,并在dart中使用默认http包进行API调用。我们如何记录正在进行的所有http请求。http或中间件中是否有任何内置功能可用于此功能?似乎没有内置的方法来记录请求。但是,您可以实现自己的日志请求: class MyClient extends BaseClient { MyClient(this.delegate); final Client delegate; Future<StreamedResponse> send(Bas
class MyClient extends BaseClient {
MyClient(this.delegate);
final Client delegate;
Future<StreamedResponse> send(BaseRequest request) {
_logRequest(request);
return delegate.send(request);
}
void close() => delegate.close();
void _logRequest(BaseRequest request) => ....;
}
类MyClient扩展了BaseClient{
MyClient(this.delegate);
最终客户代表;
未来发送(BaseRequest请求){
_日志请求(请求);
返回委托。发送(请求);
}
void close()=>delegate.close();
void _logRequest(BaseRequest请求)=>。。。。;
}
您可以使用http\u记录器
像这样将它们添加到pubspec.yaml中
http: ^0.11.3+16
http_middleware: ^1.0.0
http_logger: ^1.0.0
注意:http_logger 1.0.0仅适用于http 0.11.3+16。(更新日期:2020年4月2日)
并将其导入文件,如下所示:
import 'package:http_middleware/http_middleware.dart';
import 'package:http_logger/http_logger.dart';
import 'package:http/http.dart' as http;
并使用它们:
HttpWithMiddleware httpClient = HttpWithMiddleware.build(middlewares: [
HttpLogger(logLevel: LogLevel.BODY),
]);
final http.Response response = await httpClient.post(
"https:nhatvm.com/v1/user/login",
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, String>{'email': email, 'password': password}),
);
HttpWithMiddleware httpClient=HttpWithMiddleware.build(中间件:[
HttpLogger(logLevel:logLevel.BODY),
]);
final http.Response Response=wait httpClient.post(
“https:nhatvm.com/v1/user/login”,
标题:{
“内容类型”:“应用程序/json;字符集=UTF-8”,
},
正文:jsonEncode({'email':email,'password':password}),
);
按原样调试解决方案
类LoggableHttpClient扩展BaseClient{
最终客户代表;
最终记录器(u记录器),;
LoggableHttpClient(此._代表,此._记录器);
@凌驾
无效关闭(){
_delegate.close();
}
@凌驾
未来发送(BaseRequest请求)异步{
字符串s=“${request.method}${request.url}-->”;
s+=“\n标题:${request.headers}”;
if(请求为request&&request.body.length>0){
s+=“\n正文:${request.body}”;
}
_记录者信息;
最终响应=等待代表发送(请求);
s=“${request.method}${request.url}”