Angular在发送之前获取原始http请求

时间:2019-05-09 15:12:12

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

我正在尝试获取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 ...

我的问题

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可能会做

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