Pocket身份验证返回BadRequest,内容类型为'application / json'

时间:2015-05-04 16:47:57

标签: json node.js http-headers pocket

我正在检索口袋api的访问令牌。我能够成功使用内容类型为application/x-www-form-urlencoded的Http POST请求。

{ 
  host: 'getpocket.com',
  path: '/v3/oauth/authorize',
  port: 443,
  method: 'POST',
  headers:
   { 'Content-Type': 'application/x-www-form-urlencoded',
     'Content-Length': 79 } 
}

但pocket也支持内容类型为application/json

{ 
  host: 'getpocket.com',
  path: '/v3/oauth/authorize',
  port: 443,
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'Content-Length': 79 } 
}

但是使用这种类型的请求会让我回复

  

'400 Bad Request'

我在nodejs上这样做。我是否必须传递任何额外的细节,比如'X-Accept'(不知道怎么做)。

1 个答案:

答案 0 :(得分:1)

我认为Pocket报告了一个错误的请求,因为您发送表单编码数据,同时在Content-Type标题中将其声明为JSON。

如果您想以JSON格式发送数据到Pocket,请设置Content-Type: application/json; charset=UTF8

如果您想以JSON格式设置X-Accept: application/json 接收数据。

要在HTTP请求中包含自定义标头,只需在发送之前将名称值对添加到req.headers即可。例如:

headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Accept' : 'application/json'}

或:

req.headers['X-Accept'] = 'application/json'

查看https://nodejs.org/api/http.html#http_http_request_options_callback