2017-04-07 79 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