构建带端口号和参数的HTTP GET请求

10 投票
2 回答
21448 浏览
提问于 2025-04-16 11:44

我想做一件很简单的事情,就是构建一个用于获取请求的URL,这个URL里包含一个端口号和一些参数,格式像这样 http://localhost:8080/read?date=whatever

我尝试了好几种方法,但都没有成功,这应该不算太难,但我就是想不出解决办法。

希望有人能帮帮我,我会非常感激的

提前谢谢大家

2 个回答

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
12

之前的回答并没有直接回答你问的问题。试试这个:

import urllib

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

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

简单来说,urllib这个库里有一个函数可以帮你完成你想要的功能,叫做urlencode。你只需要把一个包含参数和对应值的字典传给它,它就会生成你在网址中'?'后面需要的参数字符串。

撰写回答