meteor app中的HTTP post错误

时间:2016-12-27 20:07:58

标签: http meteor

我正在尝试使用以下代码通过meteor调用HTTP post api:

   HTTP.post(url, {
                    headers: {
                        'X-Parse-Application-Id': appID,
                        'X-Parse-REST-API-Key': restKey,
                        'content-type': 'application/json'
                    },
                    data: {
                        "username": username,
                        "password": password,
                        "usertype": "3"

                    }
                }, function(error, result) { 
                    if (error) {
                        console.log(error);
                    } 
                }

            );

此代码提供HTTP错误:

{
    "code": 200,
    "error": "bad or missing username"
}

我已经使用Google Chrome中的Postman扩展程序测试了HTTP发布请求,并且我已成功发布数据。我在邮递员中使用了与上述HTTP请求相同的URL和标头,并将主体定义为原始json数据:

{ 
    "username": "testuser123",
    "password": "123456", 
    "usertype": "3"

}

我不确定为什么Meteor HTTP POST请求是一个错误的请求。我可以在Meteor中成功调用HTTP Get API,问题只出现在Post API中。    我正在尝试通过此API创建新用户。以前,这个帖子请求是Parse。现在,由于迁移,我在Heroku上部署了解析服务器。此帖子请求在迁移之前完全正常。迁移后,所有GET请求都没问题,但是这个帖子请求有问题。

1 个答案:

答案 0 :(得分:0)

将内容类型从application / json替换为application / x-www-form-urlencoded并使用params代替数据修复了该问题。

 HTTP.call('POST', url, {
                    headers: {
                        'X-Parse-Application-Id': appID,
                        'X-Parse-REST-API-Key': restKey,
                        'content-Type': 'application/x-www-form-urlencoded'
                    },
                    params: {

                        'username': u,
                        'password': p,
                        'usertype' : "3"

                    }
                }, function(error, result) {
                    Session.set("loading",false);
                    if (error) {
                        console.log(error);
                    } 

                }

            );