试图重写标题的内容类型,但它仍然在文本/纯文本中。有一种方法可以使用Ben的GateWayAPI,但希望有一个不涉及自定义包装的解决方案。
    var url = this.url;
    var body = JSON.stringify({email_login: "login", password_login: "password"});
    var headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
    return this.http.post(url, body, {headers:headers})
        .map(function (response) {
            return response.json();
        })
        .catch(this.handleError);发布于 2016-09-28 17:18:40
Request post of Http具有以下签名:
post(url: string, body: any, options?: RequestOptionsArgs)第三个参数是带有RequestOptionsArgs类型的参数,这意味着必须将RequestOptions传递给它,而不是Headers。您还应该使用箭头运算符(=>)而不是function。你要找的是这样的东西:
result: any;
httpPostTest() {
var url = this.url;
var body = JSON.stringify({email_login: "login", password_login: "password"});
let headers: Headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded' });
let options: RequestOptions = new RequestOptions({ headers: headers });
this.http.post(url, body, options)
    .map(response => {
        response = response.json();
    })
    .catch(this.handleError);
}在此之后,您需要使用订阅来获取response,因此假设这个函数名为httpPostTest (我将在上面添加它),我们希望将响应存储在名为result的变量中
this.httpPostTest().subscribe(
            response => { this.result = response; },
            error => { console.log('ERROR'); },
            () => { console.log('FINISHED')}
);发布于 2016-09-28 16:37:35
不如使用附加函数来代替:
let headers = new Headers();
headers.append("Content-Type", "application/x-www-form-urlencoded");发布于 2016-09-28 17:30:02
您应该创建RequestOptions类的一个实例,并使用字符串而不是json对象,因为您使用的是表单-urlencoded:
 var body = "email_login=login&password_login=password";
 var headers = new Headers();
 headers.append('Content-Type', 'application/x-www-form-urlencoded');
 let options = new RequestOptions({ headers: headers });
 this.http.post(url, body, options);https://stackoverflow.com/questions/39749667
复制相似问题