未指定NativeScript Http POST正文参数

时间:2016-11-09 20:13:13

标签: post angular nativescript

我正在尝试学习并测试NativeScript + Angular2,我正在尝试执行一个简单的帖子请求,我已经在Postman中测试了它应该按预期工作但我收到400错误说:

  

{“error”:{“code”:400,“error”:“invalid_request”,“error_description”:“client_id not specified”,“message”:“client_id not specified”,“details”:[]} }

请注意“未指定client_id”...

我确信从阅读文档中我指定了client_id

我尝试了一堆不同的标题配置,我已经阅读了NativeScript文档和Angular 2文档,但我不太确定这里的问题是什么。

以下是我的代码

getToken() {

    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

    let body = JSON.stringify({
        client_id: Config.clientid,
        client_secret: Config.clientsecret,
        grant_type: 'client_credentials'
    })

    console.log("Body: " +  body);
    // Body: {"client_id":"12345","client_secret":"98765","grant_type":"client_credentials"}

    return this.http.post(
        Config.tokenUrl,
        body,
        { headers: headers }
    )
    .map(response => {
        let data = response.json()
        console.log("Result: " + data.toString());
        // Result: {"error":{"code":400,"error":"invalid_request","error_description":"client_id not specified","message":"client_id not specified","details":[]}}
        Config.token = data.Result.token;
        console.log("Token: " + Config.token);
        return data;
    })
    .catch(this.handleErrors);
}

我在使用Fiddler捕获实际通信方面遇到了问题,这是我正在修复的其他内容。但同时,任何想法?

更新

我发现如果我这样做:

    let body =  'client_id=' + Config.clientid + '&client_secret=' + Config.clientsecret + '&grant_type=client_credentials';
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

它有效。

0 个答案:

没有答案