【问题标题】:How to perform HTTPS Calls in Pycurl?如何在 Pycurl 中执行 HTTPS 调用?
【发布时间】:2014-11-18 15:39:45
【问题描述】:

我想在 HTTPS 页面上使用“pycurl”登录发送POST 请求的网站。我做了以下事情:

import pycurl, urllib
curl = pycurl.Curl()
curl.setopt(pycurl.COOKIEFILE, "")
post = "_username=something&_password=somethingelse&_submit=Login"
curl.setopt(pycurl.URL, "https://www.example.com/login_check")
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.POSTFIELDS, post)
curl.perform()

但我无法登录。可能是因为我的代码进行了 http 调用。虽然我可以在“POSTMAN”中使用相同的参数执行登录发送“POST”请求

所以看起来登录是正确的,但我在 python 中执行相同的操作时做错了。请指导。

【问题讨论】:

  • 当您说它不起作用时,您能否向我们提供错误消息和/或说明您预期会发生什么以及正在发生什么?
  • 更新了问题。

标签: python login https pycurl


【解决方案1】:

根据 pycURL 文档,您的帖子数据需要是键值对和 url 编码:

post_data = {'field': 'value'}
# Form data must be provided already urlencoded.
postfields = urlencode(post_data)
# Sets request method to POST,
# Content-Type header to application/x-www-form-urlencoded
# and data to send in request body.
c.setopt(c.POSTFIELDS, postfields)

【讨论】:

  • 我传递的内容已经被编码;)就像你的情况一样,如果 post_data = {'field1': 'value1', 'field2':'value2'} 那么 postfields 将是 field2=value2&field1=value1 所以我不认为这是一个问题。
  • 你能发布服务器响应吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2012-01-26
相关资源
最近更新 更多