Python, requests, error = http.client.BadStatusLine: <ServerStats>



尝试从URL获取数据,但请求时遇到问题。我认为这与页面或数据的格式(没有(有关?

我正在使用 Python 3.6.5,请求 2.20.0

import requests
r = requests.get('http://37.187.88.24:7141/')
print (r)

它给了我这个错误并显示页面的第一行

File " ..  Python36-32libhttpclient.py", line 279, in _read_statusraise BadStatusLine(line)http.client.BadStatusLine: <ServerStats>

来自该服务器的响应根本不遵循HTTP协议。它直接响应内容,没有状态行(通常是HTTP/1.1 200 OK(。您可以使用类似curl的实用程序看到这一点:

# curl -v http://37.187.88.24:7141/
*   Trying 37.187.88.24...
* TCP_NODELAY set
* Connected to 37.187.88.24 (37.187.88.24) port 7141 (#0)
> GET / HTTP/1.1
> Host: 37.187.88.24:7141
> User-Agent: curl/7.56.1
> Accept: */*
>
<ServerStats>
<Name>TP_Map_Test</Name>
<ModuleName>Napoleonic Wars</ModuleName>
...(snipped)

如果您拥有该 Web 服务器,请修复您的 Web 应用以提供有效的响应。如果没有,您可以使用telnetlib通过底层 telnet 协议与服务器通信:

from telnetlib import Telnet
t = Telnet('37.187.88.24', 7141)
t.write(b'GET / HTTP/1.0n')
print(t.read_all())

这输出:

b'<ServerStats>n<Name>TP_Map_Test</Name>n<ModuleName>Napoleonic Wars</ModuleName>n<MultiplayerVersionNo>1157</MultiplayerVersionNo>n<ModuleVersionNo>1210</ModuleVersionNo>n<MapID>162</MapID>n<MapName>custom map 1</MapName>n<MapTypeID>4</MapTypeID>n<MapTypeName>Deathmatch</MapTypeName>n<NumberOfActivePlayers>0</NumberOfActivePlayers>n<MaxNumberOfPlayers>4</MaxNumberOfPlayers>n<HasPassword>Yes</HasPassword>n<IsDedicated>Yes</IsDedicated>n<HasSteamAntiCheat>No</HasSteamAntiCheat>n<ModuleSetting0>6</ModuleSetting0>n<ModuleSetting1>8</ModuleSetting1>n<ModuleSetting2>0</ModuleSetting2>n<ModuleSetting3>0</ModuleSetting3>n<ModuleSetting4>1</ModuleSetting4>n<ModuleSetting5>1</ModuleSetting5>n<ModuleSetting6>100</ModuleSetting6>n<ModuleSetting7>0</ModuleSetting7>n<ModuleSetting8>0</ModuleSetting8>n<ModuleSetting9>1</ModuleSetting9>n<ModuleSetting10>2</ModuleSetting10>n<ModuleSetting11>120</ModuleSetting11>n<ModuleSetting12>300</ModuleSetting12>n<ModuleSetting13>5</ModuleSetting13>n</ServerStats>'

相关内容

最新更新