如何使用Python请求库发送原始HTTP请求消息?

如何使用Python请求库发送原始HTTP请求消息?,python,python-requests,Python,Python Requests,我在本地机器上有一个进程,它监听一个端口,我可以将原始HTTP请求消息以 GET /hello HTTP/1.1 ... 它将正确响应。当我这样做的时候它就起作用了 cat request | nc localhost 1111 > response 其中“请求”文件包含相同的HTTP请求消息。我如何使用请求库实现这一点?如果我写作,它就不起作用 requests.get("http://localhost:1111/hello", headers=...) 或者,是否可以使用请求库

我在本地机器上有一个进程,它监听一个端口,我可以将原始HTTP请求消息以

GET /hello HTTP/1.1
...
它将正确响应。当我这样做的时候它就起作用了

cat request | nc localhost 1111 > response
其中“请求”文件包含相同的HTTP请求消息。我如何使用请求库实现这一点?如果我写作,它就不起作用

requests.get("http://localhost:1111/hello", headers=...)

或者,是否可以使用请求库的响应解析引擎来解析原始HTTP响应消息,因为我可以通过套接字连接获得该消息?我想访问Json格式的响应消息体。

我不确定您的本地主机设置是否有问题。你只是用它来测试还是什么?但通常情况下会是这样

import requests
url=r'https://jsonplaceholder.typicode.com/posts/1' #just a url with test json data

r=requests.get(url) #note that headers aren't 100% needed 

j=r.json() #j is now a python dict object

print(j)

你说它不起作用是什么意思?是的,可以使用内置功能解析json响应。我将“找不到\n”作为响应。请求主要是构建在urllib之上的更高级别api,而urllib本身构建在更低级别的组件上,因此显然您要查找的不是请求。通过谷歌搜索“python http parser”应该可以启动WRT/json在stdlib中有一个json解析器,所以一旦解析了响应,只需将响应主体传递给json.loads(),我不确定localhost是如何配置的,但据我所知,它是一个生产服务器,可以正常工作,他们不会为我改变的。正如我指出的,我可以使用
nclocalhost 1111
命令或Python中的套接字获得有效响应,但不能使用
requests.get
。但是,我被一个原始的HTTP响应消息困住了,我不知道如何轻松地解析它以直接到达消息体。