【问题标题】:convert JSON to multipart/form-data angular/ionic将 JSON 转换为 multipart/form-data angular/ionic
【发布时间】:2020-11-26 08:24:57
【问题描述】:

当我发送 POST 请求表单 POSTMAN 并得到正确响应时

这是 Postman POST 的 Form-Data Body 请求。

端点:https://cholas.in/wp-json/digits/v1/send_otp

当我从 POSTMAN 发送 POST 请求并得到错误响应时

JSON 正文请求

Content-Type : multipart/form-data;

内容类型:多部分/表单数据;带有 json 正文的标头:

我发送帖子请求时的 Angular 和 IONIC 代码

    const formData = new FormData();
    let httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'multipart/form-data; charset=UTF-8'
        })
    };
  
    
    formData.append('countrycode',this.formSMS.countrycode);
    formData.append('mobileNo',this.formSMS.mobileNo);
    formData.append('type',this.formSMS.type);
    formData.append('whatsapp',this.formSMS.whatsapp);
    // rest data to the form.
    //Object.keys(restObj).forEach(key => {
    //  formData.append(key, restObj[key]);
    //});
    console.log(formData);
    // Send it.
    return this.http.post(Url, formData, httpOptions)
      .toPromise()
      .catch((e) => {
          console.log(e);
        // handle me
      });

但我得到了我不想要的错误响应。

注意:OTP 提供商文档注意:请求应作为正文中的 POST 参数发送

在 IONIC/ANGULAR/POSTMAN(JSON 类型) 中正确的方法是什么?

【问题讨论】:

  • 任何人知道我在离子代码中遇到错误吗?

标签: json angular ionic-framework postman ionic-native


【解决方案1】:

您不需要在发布数据中传递 httpOptions,因为您正在传递表单数据,角度会为您处理

const formData = new FormData();
    let httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'multipart/form-data; charset=UTF-8'
        })
    };
  
    
    formData.append('countrycode',this.formSMS.countrycode);
    formData.append('mobileNo',this.formSMS.mobileNo);
    formData.append('type',this.formSMS.type);
    formData.append('whatsapp',this.formSMS.whatsapp);
    // rest data to the form.
    //Object.keys(restObj).forEach(key => {
    //  formData.append(key, restObj[key]);
    //});
    console.log(formData);
    // Send it.
    return this.http.post(Url, formData)
      .toPromise()
      .catch((e) => {
          console.log(e);
        // handle me
      });

下面的stackbliz包含解决方案请参考 https://stackblitz.com/edit/angular-http-get-examples-f28x9u?file=app%2Fapp.component.ts

【讨论】:

  • 谢谢Rahul,这真的很棒,效果很好。但我也会在 IONIC Native 中使用它,你知道同样的技巧是否也适用于 IONIC 吗?
  • 是的,这也适用于离子。如果答案解决了您的问题,请将其标记为已接受。
猜你喜欢
  • 2014-10-31
  • 2013-07-26
  • 2015-12-20
  • 2018-12-16
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2020-10-05
相关资源
最近更新 更多