【问题标题】:HTTPS request using python requests library使用 python 请求库的 HTTPS 请求
【发布时间】:2017-03-23 10:19:43
【问题描述】:

我正在尝试使用 python 请求库发送 https 请求 我的代码是

full_url = ''.join(['https://', get_current_site(request).domain, '/am/reply'])
data = {'agent_type':'trigger','input':platform,'user':request.user.id}
print  "hi" ### this is printing
a = requests.get(full_url,params=data,verify=False) ##the execution is stucked here even error are not appearing 
print "hello" ## this code is not printed

问题是请求后没有执行,整个代码卡在这一点上。 我尝试使用 python shell 验证我的代码,它运行完美。 有什么方法可以让我实时调试整个请求响应,或者有人可以建议我一个解决方案

当有 http 时,整个代码工作正常,但切换到 https 后,整个代码停止工作。我什至尝试放置证书文件但也没有成功

【问题讨论】:

  • 你期待什么样的输出?
  • @JitendraMeena 在最后一行代码我的执行被卡住了意味着甚至没有显示错误......但是使用 python shell 我可以执行代码
  • 它工作正常......打印输出......你应该做这样的事情 print(a.json()) 或 print(a.content)
  • 可以分享一下你网站的域名吗?

标签: python django python-requests


【解决方案1】:

这很正常。一些网站只接受http 和一些https,其中一些同时接受。 http 端口为 80,https 端口为 443。例如,如果网站使用 https,则表示安全 http。所以他们实际上需要标头等中的额外信息。
检查 http 的请求 api
http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification

【讨论】:

  • 一定要使用https吗?我的意思是如果 http 请求有效,那么继续它。
  • 如果可能的话,你可以在你的问题中添加 url 吗?所以我们可以控制它
  • 代码在常规 https 上工作,即端口 443,但在 django runsslserver 配置上不工作
  • 可能受verify=False选项影响
  • 不,它只能与 verify=False 一起使用,因为我没有将任何证书传递给它