【问题标题】:Angular get raw http request before sendingAngular在发送之前获取原始http请求
【发布时间】:2023-03-16 08:00:01
【问题描述】:

我正在尝试在将 HTTP 请求发送到服务器之前获取它们。

我的第一次尝试是像这样写一个 HttpIntercepter

@Injectable()
export class HttpLoggingInterceptorProvider implements HttpInterceptor
{
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>
  {
    console.log('Request To Be Logged:');
    console.dir(req);

    if(req.body)
    {
      try
      {
        let formData = <FormData>req.body;

        if(formData.has('id_front'))
          console.log(formData.get('id_front'));

        if(formData.has('id_back'))
          console.log(formData.get('id_back'));
      }
      catch(err)
      {

      }
    }


    return next.handle(req);
  }

这很好用,但不是我想要的。我想将最终的组合请求作为原始文本而不是对象。

此刻控制台输出looks like this

如您所见,我没有从中获得任何信息。我看不到设置了多少或设置了哪些值。

但是当我以编程方式请求正文的内容时,我可以获得如下值:

let formData = <FormData>req.body;

        if(formData.has('id_front'))
          console.log(formData.get('id_front'));

        if(formData.has('id_back'))
          console.log(formData.get('id_back'));

至少我知道身体中存在一些东西,除了 FormData 的类型......

我的问题

如何获取将发送到服务器的原始组合请求?

【问题讨论】:

  • 为什么不直接打开浏览器开发工具的网络面板?浏览器已经提供了该信息,无需编写任何代码。
  • @JBNizet 从中创建一个答案,您将获得投票 => 它有效 :)

标签: angular typescript ionic-framework ionic3 angular-httpclient


【解决方案1】:

你可能会这样做

console.log(JSON.stringify(req.body))

【讨论】:

    【解决方案2】:

    那是因为“try”块是在其他所有内容之后执行的。 Angular http 请求总是在其他请求之后执行,因此您必须从那里获取数据或以其他方式执行此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      相关资源
      最近更新 更多