2015-08-31 21 views
2

请参阅下面的代码。我正在尝试在我的请求正文中发送{“status”:“accepted”}。我不断从他们的最终的API找回的错误是:如何在node.js中的http PUT的主体中使用JSON?

{"message":"Unable to parse JSON in request body.","code":"invalid_json"}

我可以使这项工作在斯威夫特但我使用与设置的字典对象和序列化它。我不知道如何在Node.JS中做到这一点。

var https = require('https') 

var options = { 
    "host": "sandbox-api.uber.com", 
    "path": "/v1/sandbox/requests/" + req.body.request_id, 
    "method": "PUT", 
    "headers": { 
    "Authorization" : "Bearer " + req.body.bearer_token, 
    "Content-Type" : "application/json", 
    }, 
    "body" : { 
     "status" : "accepted" 
    } 
} 

callback = function(response) { 
    var str = '' 
    response.on('data', function(chunk){ 
     str += chunk 
    }) 

    response.on('end', function(){ 
     console.log(str) 
    }) 
} 

https.request(options, callback).end() 
+0

的内建HTTP库是相当准系统。使用[request](https://github.com/request/request)等更高级别的东西要容易得多,它为您处理了大量细节。 – josh3736

回答

10

你把它写像请求对象:

var https = require('https') 

var options = { 
    "host": "sandbox-api.uber.com", 
    "path": "/v1/sandbox/requests/" + req.body.request_id, 
    "method": "PUT", 
    "headers": { 
    "Authorization" : "Bearer " + req.body.bearer_token, 
    "Content-Type" : "application/json", 
    } 
} 

callback = function(response) { 
    var str = '' 
    response.on('data', function(chunk){ 
    str += chunk 
    }) 

    response.on('end', function(){ 
    console.log(str) 
    }) 
} 

var body = JSON.stringify({ 
    status: 'accepted' 
}); 
https.request(options, callback).end(body); 
+0

谢谢你!我无法在任何地方找到答案。这就像之前没有人做过或至少在网上讨论过它。 –

相关问题