0

我已经被困在这里很长一段时间了,但找不到任何有用的东西。我正在尝试连接到一个网站并在 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 文件。知道代码有什么问题吗?

谢谢

4

2 回答 2

1

在 HTTP 中,只有 POST 请求才应该有正文。request() 的第三个参数实际上是正文(请参阅http://docs.python.org/py3k/library/http.client.html#http.client.HTTPConnection.request) - 只需构建 URL,如第二个例子。

于 2012-09-17T21:55:52.753 回答
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)
于 2015-12-09T08:54:07.533 回答