使用端口号和参数构建HTTP GET请求

时间:2011-02-13 15:49:01

标签: python http get request

我正在尝试做一个非常简单的事情,为包含端口号和一些参数的get请求构建一个URL,如下所示http://localhost:8080/read?date=whatever

我尝试了几种没有成功的方法,它应该不会太难,但我无法提出解决方案。

我希望有人帮助我,我们将不胜感激

提前致谢

3 个答案:

答案 0 :(得分: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对的字典,它会在'?'之后产生你需要的正确参数字符串。在你的网址。

答案 1 :(得分: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

所以你可以这样做:

url = URL("localhost", "8080", "read", {"date" : "whatever"})
print url

答案 2 :(得分:-3)

data = urllib2.urlopen(url).read()