HTTP Post请求体被解释为text / plain而不是url-encoded。

时间:2016-07-21 12:24:37

标签: http https angular http-post

这就是我的电子邮件功能:

sendEmail(fromName, fromEmail, message) {
    var headers = new Headers();
    var recieverMail = "abc@cdf.com";//service@csc.kth.se"
    var subject = "error report submitted by interactive screen"
    var recieverName = "CSC SERVICE";
    headers.append("Authorization", "Basic "+btoa("api:key-MY_API_KEY"));
    headers.append("content-type", "application/x-www-form-urlencoded");
    var url = "https://api.mailgun.net/v3/mymailgunserver.mailgun.org/messages ";
    var body = "from="+fromName+"<"+fromEmail+">&to="+recieverName+"<"+recieverMail+">&subject="+subject+"&text="+message;

    return this.http.post(url,body,{headers:headers});
  }

enter image description here

从上图可以看出,我的请求附有一个文字/普通标题,为什么会这样?

我的请求正文被解释为text / plain而不是url-encoded。有什么建议我可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我想知道HTTP标头名称是否区分大小写。您可以尝试以下方法:

let headers = new Headers();
headers.append("Content-Type", "application/x-www-form-urlencoded");

另一个可能的问题是您忘记导入Headers类:

import { Http, Headers, ... } from '@angular/http';

答案 1 :(得分:0)

你可以试试。

headers.append("Content-Type", "application/x-www-form-urlencoded");

请求标头参数必须是“Content-Type”。因为请求标头参数区分大小写。