2017-01-29 88 views
0

我正在处理这个小错误,但我无法获得解决方案。我对一个页面进行身份验证,并打开了“inspect/network”chrome工具,以查看调用的Web服务以及如何调用。我发现这是用来:错误500发送python请求为铬

enter image description here

我已经删相关型号的网站敏感数据。所以,我必须使用python来做同样的请求,但是我总是收到错误500,而服务器端的日志没有显示有用的信息(只有java traceback)。

这是

response = requests.post(url,data = 'username=XXXXX&password=XXXXXXX') 

网址中有你在“一般/请求URL”的标签在图片中看到相同的字符串请求的代码。 数据具有您在图像下的“表单数据”中看到的相同字符串。

这看起来很简单的要求,但我不能让它的工作:(。

问候

+0

[请求文档](http://docs.python-requests.org/en/master/user/quickstart/#make-a-request)提供了一些如何提出请求来帮助您的示例。 – trixn

+0

Hello @trixn,我已经阅读过文档,我没有找到有用的东西:( – Nico

回答

0

如果你希望你的request看起来像从Chrome中来,除了发送正确data你需要指定标题以及。你得到500错误的原因可能是服务器端的某些设置不允许来自“非浏览器”的流量。

所以在你的情况下,你需要添加headers

headers = {'Accept': 'application/json, text/plain, */*', 
      'Accept-Encoding': gzip, deflate, 
      ...... # more 
      'User-Agent': 'Mozilla/5.0 XXXXX...' # this line tells the server what browser/agent is used for this request 
      } 

response = requests.post(url,data = 'username=XXXXX&password=XXXXXXX', headers=headers) 

P.S.如果你很好奇,从requests默认的标题是:

>>> import requests 
>>> session = requests.Session() 
>>> session.headers 
{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 
'Accept': '*/*', 'User-Agent': 'python-requests/2.13.0'} 

正如你可以看到默认的User-Agentpython-requests/2.13.0,有的网站做阻止此类流量。