有人可以向我解释为什么在urllib2中实现了以下内容。
当我使用http传递编码的网址时,它会再次对参数进行编码 而在https的情况下,它不再是urlencode
所以我们说(http)电话是http //:example.com?email=amit%40sethi.com请求是
http://example.com?email=amit%2540sethi.com
在https的情况下,它是
https://example.com?email=amit%40sethi.com
由于
编辑:添加更多详情
我正在提出的基本要求是
SF_EXTEND_RESOURCE = "https://www.superfax.in/api/voice/planchange/?"
params_dict = {'username':USERNAME,
'password':PASSWORD,
'email':str(user.email)
}
_url = SF_EXTEND_RESOURCE + urlencode(params_dict)
response = urllib2.urlopen(_url).read()
现在我的问题是,当我使用http时,电子邮件字符串被编码两次,而不是https的情况。我在ubuntu Lucid上使用Python 2.6.5。我无法理解这是不可重复的。
答案 0 :(得分:1)
我只是尝试过,对我来说,行为不是你观察到的:对我来说,http和https网址的工作原理相同。
import urllib2
out = urllib2.urlopen("https://www.google.com/?q=foo%40bar");
print out.geturl()
open('out1', 'w').write(out.read())
out = urllib2.urlopen("http://www.google.com/?q=foo%40bar");
print out.geturl()
open('out2', 'w').write(out.read())
比较out1
和out2
,你会发现搜索框的“value”属性中的foo @ bar都是正确的,所以似乎没有任何双重编码继续。