gpt4 book ai didi

http - Python 3,http.client HTTP 错误 400

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:02 25 4
gpt4 key购买 nike

我一直在做一个小宠物项目,我正在使用 http.client 与 omdbapi 进行通信(抱歉,如果这个术语不好,请随时纠正我) .从这里,我使用以下代码访问网站上的数据:

import http.client, json
__connection = http.client.HTTPConnection("www.omdbapi.com")

def getDetailsFromTitle(title):
__connection.request("GET", "/?t=" + title)
return __processRequest()

def getDetailsFromID(id):
__connection.request("GET", "/?i=" + id)
return __processRequest()

def __processRequest():
try:
response = __connection.getresponse()
data = response.read()
data = data.decode("utf-8")
return json.loads(data)
except: return None

这对我的前几次试验来说效果很好,就像如果我抬头说“Eureka”或“Superbad”,我能够正确地取回所有数据;但是,一旦我输入“Bad Kids Go To Hell”,我在 __processRequest 中的尝试就被破坏了,并且 None 没有被返回。我设法从请求中获取的数据是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request</h2>
<hr><p>HTTP Error 400. The request is badly formed.</p>
</BODY></HTML>

它显然在 json.loads(data) 上中断,因为数据不是预期的,但我不太确定为什么会收到此错误。我去了该网站并输入了“Bad Kids Go To Hell”,一切正常。

如果您需要更多帮助,请告诉我,谢谢。

最佳答案

要创建 url 的参数列表,您应该使用 [urlencode()][1]。在这种情况下,可能是字符串中的空格导致了问题,应将它们转换为“+”字符。

__connection.request("GET", "/"+(urlencode({'t': title})

关于http - Python 3,http.client HTTP 错误 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13656381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com