2017-04-07 41 views
1

我正在嘗試編寫一個python腳本,它將向桌面應用程序偵聽8080端口發出請求。以下是我用來提出請求的代碼。製作一個成功的Python HTTP POST請求

import requests 

payload = {"url":"abcdefghiklmnopqrstuvwxyz=", 
"password":"qertyuioplkjhgfdsazxvnm=", 
"token":"abcdefghijklmn1254786=="} 

headers = {'Content-Type':'application/json'} 
r = requests.post('http://localhost:9015/login',params = payload, headers=headers) 
response = requests.get("http://localhost:9015/login") 
print(r.status_code) 

發出請求後,我得到的401

響應代碼然而,當我嘗試使用相同的郵差應用程序,我得到一個成功的響應。以下是我給郵差中的細節:

URL: http://localhost:9015/login 
METHOD : POST 
Headers: Content-Type:application/json 
Body: {"url":"abcdefghiklmnopqrstuvwxyz=", 
     "password":"qertyuioplkjhgfdsazxvnm=", 
     "token":"abcdefghijklmn1254786=="} 

我能在哪裏我跟我的Python腳本走錯了一些建議嗎?

回答

1

您通過params,當您應該通過data,或者,甚至更好,json自動設置Content-Type。所以,它應該是:

import json 
r = requests.post('http://localhost:9015/login', data=json.dumps(payload), headers=headers) 

r = requests.post('http://localhost:9015/login', json=payload) 

params添加鍵值對查詢的URL參數)

+0

感謝@alexpeits。第一個選項對我來說不起作用,但第二個選項完美地工作。 – mbvee

+0

你說得對 - 我已經更新了答案中的第一個選項。 – alexpeits