2017-10-10 57 views
0

在Python,我想保持Cookies和使用cookie要发送GET请求第二次,获取JSON数据。为什么使用。做集饼干我需要保持国家或饼干蟒蛇,十个分量的状态下使用

import requests 
import pprint 

url = 'https://shoapi.xxx.com/api/method/login' 
headers = {'User-Agent': 'Mozilla/5.0'} 
payload = {'usr':'@gmail.com','pwd':'mh'} 
response = requests.request("POST", url,headers=headers,data=payload) 
response_data_json = response.json() 


print("") 
print("") 
print(type(response.text)) 
pprint.pprint(response.text) 
print("") 
print("") 
print("-----------Header---------------") 
pprint.pprint(response.headers) 
headers=response.headers 
print("-----------End of Header---------------------------") 
print("") 
print("") 
print(type(response_data_json)) 

pprint.pprint(response_data_json) 


print("---------------------------")  

回答

1

如果您对POST使用requests.Session,并为后续GET请求重复使用相同的会话实例,会话将被维护,并为您处理cookie。

mysession = requests.Session() 
data = {'login': 'mylogin', 'pass': 'mypass'} 
mysession.post(myurl, data=data) 

mysession.get(myurl2) #uses logged in session with cookies as set 
mysession.get(myurl3) #reuses session again 

所以,你需要保持状态,而不是使用SET-饼干,除非你真的要处理这些事情自己

+0

403错误根据HTTP规范是“禁止”。这可能意味着以下两种情况之一:要么登录的用户禁止访问URL(尝试使用浏览器进行测试),要么拒绝用户代理(如“python-requests”)。如果这些用户代理被禁止,那么如果您将用户代理字符串设置为与Firefox等浏览器使用的字符串相同,那么您的脚本可能会起作用。 – jdoer1997

+0

对于该用户,我可以登录其不被禁止。 (用浏览器测试过),请提供“用户代理字符串”示例代码/ Example –

+0

难道是因为您登录到的网站服务器(shoapi.erpnext.com)与您尝试访问的网站服务器不同来自(gps.erpnext.com)? – jdoer1997