2012-02-26 5 views
0

誰かが私に説明してくれた理由をurllib2で以下のように説明できますか?httpとhttpsのURLのpython urllib2の作業の違い

私は、HTTPを使用してエンコードされたURLを渡すと、HTTPSの場合には、それが再び

をURLENCODEていないのに対し、それが再びそう(HTTP)の呼び出しがHTTP //であると言うことができますパラメータに をコードexample.com?email=アミット%40sethi.com要求が

HTTPSの場合のように、それは

https://example.com?email=amit%40sethi.comある

http://example.com?email=amit%2540sethi.com

あります210の

おかげ

編集:追加の詳細

私が作っています基本的な要求は

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

httpとhttpsの両方でURLを開いた後でも、これを再現できません。いずれの場合もクエリ文字列は再びエンコードされません。使用している実際のコード、および/またはこの結論にどのようになったのかを記入してください。 –

答えて

1

私はそれを試しましたが、私の行動はあなたが観察するものではありません。私にとっては、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比較して、あなたは、検索ボックスの「値」属性で正しいのfoo @バーの両方を見つけることができますので、任意の二エンコーディングが起こってがあるようには思えません。

関連する問題