读取HTTP 204时出现python错误“BadStatusLine”,无内容响应

2024-09-28 03:15:19 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我从python脚本向HTTP服务器发送一些JSON数据。在

connection.request('PUT', '/characteristics', json_put_data)
resp3 = connection.getresponse()
print(resp3.read().decode())

服务器正在答复以下内容:

^{pr2}$

不知怎么的,我得到了一个python错误

Traceback (most recent call last):
  File "test.py", line 28, in <module>
    resp3 = connection.getresponse()
  File "C:\Python34\lib\http\client.py", line 1172, in getresponse
    response.begin()
  File "C:\Python34\lib\http\client.py", line 351, in begin
    version, status, reason = self._read_status()
  File "C:\Python34\lib\http\client.py", line 321, in _read_status
    raise BadStatusLine(line)
http.client.BadStatusLine: ''

我的204响应格式是否不正确,或者您不能对204 No-Content响应调用read().decode(),因为在技术上标头后面没有数据?我可以调整其中任何一个(只要它仍然符合httprest标准),因为我正在编写服务器和客户机的程序。谢谢。在

编辑:我已经确定问题出在PUT之后的后续HTTP调用。无论下一个调用是httpget还是PUT,它都会失败,并与我在上面粘贴的跟踪相同。只有在发送PUT后才能复制(我可以根据需要提出任意数量的GET请求)。我开始怀疑我的204 No内容格式不正确,正如我们从wireshark跟踪中看到的那样,它期待着另一个http响应?在

Hypertext Transfer Protocol
    HTTP/1.1 204 No Content\r\n
        [Expert Info (Chat/Sequence): HTTP/1.1 204 No Content\r\n]
        Request Version: HTTP/1.1
        Status Code: 204
        Response Phrase: No Content
    Content-type: json\r\n
    \r\n
    **[HTTP response 1/2]**
    [Time since request: 0.000764000 seconds]
    [Request in frame: 4]
    [Next request in frame: 14]

Tags: noinpyclienthttpreadputrequest

热门问题