2015-05-04 52 views
0

我正在檢索口袋API的訪問令牌。我能夠成功地使用內容類型爲application/x-www-form-urlencoded的Http POST請求。袖珍驗證返回BadRequest與內容類型'應用程序/ json'

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

但口袋還支持內容類型爲application/json

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

但是,使用這種類型的請求返回我

'400錯誤的請求'

我正在做的NodeJS此。我是否必須傳遞任何額外的細節,如'X-Accept'(不知道如何做)。

回答

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

+0

也許您在發送表單編碼數據的同時在Content-Type標題中將其聲明爲JSON。我懷疑這是因爲在你提到的兩個請求中,「Content-Length」是相同的。您需要發送JSON數據才能使其工作。 –

相關問題