我已经被困在这里很长一段时间但找不到任何有用的东西。 我正在尝试连接到一个网站并在Python3中获取响应json文件。代码如下所示:
conn = http.client.HTTPConnection('host.address')
params = "xx"+ xx + "xx" + ...
conn.request('GET', '/a/b/c', params)
resp = conn.getresponse()
这实际上不会返回json文件,而是返回网页http://host.address/a/b/c,这是一个错误页面。 但是,在使用以下代码时:
params = "xx"+ xx + "xx" + ...
resp = urllib.request.urlopen("http://host.address/a/b/c?"+params)
它正确返回json文件。 知道代码有什么问题吗?
由于
答案 0 :(得分:1)
在HTTP中,只有POST请求应该有一个正文。 request()的第三个参数实际上是正文(请参阅http://docs.python.org/py3k/library/http.client.html#http.client.HTTPConnection.request) - 只需构建URL,如第二个示例所示。
答案 1 :(得分:0)
只是用一个例子来补充@ sqrtsben的回答:
import urllib.parse
import http.client
u = urllib.parse.urlparse("http://localhost:8080/index.php?utf8=✓")
conn = http.client.HTTPConnection(u.hostname, u.port)
if u.query == '':
conn.request("GET", u.path)
else:
conn.request("GET", u.path + '?' + u.query)