首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3,http.client HTTP错误400

Python 3,http.client HTTP错误400
EN

Stack Overflow用户
提问于 2012-12-01 12:33:42
回答 1查看 1.5K关注 0票数 2

我一直在做一个我喜欢的小项目,我正在使用http.client与omdbapi进行交流(如果这是糟糕的术语,很抱歉,请随时纠正我)。在这里,我使用以下代码访问网站上的数据:

代码语言:javascript
复制
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

这在我最初的几次试验中运行得很好,就像如果我查找“尤里卡”或“超级糟糕”,我就能够正确地找回我的所有数据;然而,当我输入“坏孩子下地狱”时,我在__processRequest上的尝试就被破坏了,并且没有返回任何数据。我设法从请求中获得的数据是:

代码语言:javascript
复制
<!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(数据)上中断,因为数据不是预期的,但我不太确定为什么会收到这个错误。我到网站上输入“坏孩子下地狱”,一切都很正常。

如果您还需要任何帮助,请告诉我,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 15:16:11

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

代码语言:javascript
复制
__connection.request("GET", "/"+(urlencode({'t': title})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13656381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档