2017-05-04 95 views
0

我正在嘗試使用某個公司的(尚未公開的)API。在他們的文檔中,他們列出了令牌請求的格式。下面是一個令牌申請文件的副本:這是發佈請求問題或SSL驗證問題

POST 
https://***.****.com/auth/realms/****/protocol/openid-connec 
t/token 
Headers: 
    Content-Type: application/x-www-form-urlencoded 
    Authorization: Basic {base64-encoded-key-and-secret} 
Body: grant_type:client_credentials 

的授權密鑰被他們給我的,形式'Basic a3RhdmlfdG...' 我試圖用Python語言編寫POST請求的,我有問題,我不確定這是我的錯還是他們的開發者的錯。這裏是我的代碼:

url = 'https://***.****.com/auth/realms/****/protocol/openid-connect/token' 
headers = {'Content-Type':'application/x-www-urlencoded', 'Authorization':'Basic a3RhdmlfdG...'} 
body = {'grant_type':'client_credentials'} 
response = requests.post(url = url, data = json.dumps(body), headers = headers) 
print response 

在行,其中response = ...我發現了一個SSL: CERTIFICATE_VERIFY_FAILED錯誤。我也嘗試將頭中的值更改爲隨機值,並得到相同的錯誤。我能想到的三種可能性,無論是

  1. 我做POST請求錯誤
  2. 沒有與API
  3. 我缺少一個證書有問題,我必須與郵寄要求

    它是這些問題之一還是別的嗎?

+0

#2 ......但你能告訴請求ignore_ssl_errors –

+0

的SSL錯誤消失,由於SharpSol的建議,但現在我得到一個400錯誤,應該意味着它是1和2的一些組合。 .. – David

回答

2

他們可能正在使用自簽名證書。您可以通過添加'verify = False'來繞過驗證檢查。在開始生產之前,我會刪除它。 SSL證書的有效性非常重要。

response = requests.post(url = url, data = json.dumps(body), headers = headers, veryify=False) 
+0

謝謝。這擺脫了SSL問題,現在我得到了一個400錯誤... – David

+0

「錯誤的請求」,API不喜歡你發送的東西。 http://stackoverflow.com/questions/19671317/400-bad-request-http-error-code-meaning – SharpSol

+1

介意接受我的答案? – SharpSol