2011-02-13 179 views
7

我試圖做一個很簡單的事情,建立一個包含端口號和一些參數的GET請求的URL,因爲它遵循http://localhost:8080/read?date=whatever構建HTTP GET請求參數

我嘗試了好幾種沒有成功的方式,它不應該太困難,但我不能想出一個解決方案。

我希望有人幫助我,這將大大提前

回答

12

以前的答案是沒有問題的,你居然問讚賞

感謝。試試這個:

import urllib 

myPort = "8080" 
myParameters = { "date" : "whatever", "another_parameters" : "more_whatever" } 

myURL = "http://localhost:%s/read?%s" % (myPort, urllib.urlencode(myParameters)) 

基本上,urllib有一個功能可以做你想做的事情,叫做urlencode。傳遞一個包含你想要的參數/ parameter_value對的字典,它將在'?'之後生成你需要的正確參數字符串。在你的網址。

-3
data = urllib2.urlopen(url).read() 
+0

,能不能請您提供更詳盡的答案嗎?我是python的新手,我想看看它是如何一步一步完成的。謝謝 – 2011-02-13 16:03:37

+0

請檢查現有的Python文檔包含足夠的示例:http://docs.python.org/library/urllib2.html – 2011-02-13 17:14:41

1

這裏有一個簡單的泛型類,你可以(重新)使用方法:

import urllib 
class URL: 
    def __init__(self, host, port=None, path=None, params=None): 
     self.host = host 
     self.port = port 
     self.path = path 
     self.params = params 

    def __str__(self): 
     url = "http://" + self.host 
     if self.port is not None: 
      url += ":" + self.port 
     url += "/" 
     if self.path is not None: 
      url += self.path 
     if self.params is not None: 
      url += "?" 
      url += urllib.urlencode(self.params) 
     return url 

所以,你可以這樣做: