【问题标题】:Angular 2: HTTP Post Request with URL parameters and body type parameterAngular 2:带有 URL 参数和正文类型参数的 HTTP Post 请求
【发布时间】:2016-04-19 05:09:20
【问题描述】:

我正在尝试使用 Angular 2 发出 HTTP POST 请求,如下所示。

saveUserSelection() {
    var json = JSON.stringify({access_token: localStorage.getItem('access_token')});
    var params = 'json=' + json;
    var headers = new Headers();
    headers.append({ 'Content-Type': 'application/json' });

    return this.http
        .post('http://localhost:8080/user/selection', params, { headers: headers })
        .map(res => res.json());
}

但我收到如下错误。

angular2.dev.js:23877 例外:评估“ngSubmit”时出错 原始异常:SyntaxError:无法在“XMLHttpRequest”上执行“setRequestHeader”:“[object Object]”不是有效的 HTTP 标头字段名称。

有人知道我的代码有什么问题吗?以及如何使用解析正文类型参数创建 HTTP POST 请求?

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    这应该做你想做的:

    headers.append('Content-Type', 'application/json' );
    headers.append('access_token', localStorage.getItem('access_token'));
    

    【讨论】:

    • 我需要将 access_token 作为参数传递。这是一个字符串。我还需要将字符串数组作为正文类型参数传递。怎么做?
    • 上述错误消失了,但现在它告诉 HTTP Status 400 - Required String parameter 'access_token' is not present
    • 那么如何传递一个body type参数呢?
    • 我需要在请求正文中传递一个字符串数组
    • 目前仅支持字符串作为正文类型 AFAIK。如果您需要其他东西,则需要使用不同于 Angulars Http 的东西提出请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多