簡體   English   中英

適用於http和https url的python urllib2的區別

[英]Difference in working of python urllib2 for http and https urls

有人可以向我解釋為什么在urllib2中實現了事情。

當我使用http傳遞編碼的url時,它將再次對參數進行編碼,而使用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。 我不明白這是如何不可復制的。

我只是嘗試了一下,對我來說,行為並不是您所觀察到的:對我來說,http和https URL的工作原理相同。

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())

比較out1out2 ,您會在搜索框的“ value”屬性中找到正確的foo @ bar,因此似乎沒有任何雙重編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM