Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何在flatter中记录http请求_Dart_Flutter - Fatal编程技术网

Dart 如何在flatter中记录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

我正在用flatter开发一个应用程序,并在dart中使用默认http包进行API调用。我们如何记录正在进行的所有http请求。http或中间件中是否有任何内置功能可用于此功能?

似乎没有内置的方法来记录请求。但是,您可以实现自己的日志请求:

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}”