【发布时间】:2018-03-29 22:11:06
【问题描述】:
我有一个向端点发出的请求,但由于某种原因,响应正文仅包含响应的最后一行(整个响应在 fiddler 中捕获)。如果我使用 requests 模块在 python 中重新创建请求,也会发生同样的事情。但是,我注意到如果我在 python 中获取整个原始响应,我可以看到所有行(由多个 \r 分隔)。我想知道是否可以像使用 python 中的 response.raw.data 方法一样查看整个原始响应。换句话说,有没有一种方法可以查看整个文本响应,而不是切断除最后一行之外的所有内容?如果有人知道为什么最后一行被切断,也将不胜感激。
为了澄清,这只发生在这个单一端点上,我怀疑响应正文中的\rs 可能是罪魁祸首,但我不确定。我没有从任何其他 http 响应中看到这种行为。
编辑:这是我用来查看响应的代码
bodyB, _ := ioutil.ReadAll(resp.Body)
bodyStr := string(bodyB)
【问题讨论】:
-
完成。使用
response.text访问 python 中的文本响应时也会出现此问题 -
在 Go 中尝试这个函数golang.org/pkg/net/http/httputil/#DumpResponse,并确保在此之前没有其他内容读取正文,如果确实需要您自己重置正文。您可以查看 DumpResponse 的源代码,了解如何在读取正文后重置正文 (golang.org/src/net/http/httputil/dump.go?s=8166:8231#L271),从而有效地允许对正文进行另一次后续读取。
-
我回家后会试试这个,谢谢。知道什么可能会在多个语言中抛出文本响应吗? @mkopriva
-
@JordanAllen 回复格式错误
-
\r 是回车符。它指示您的终端将光标(或在打字机上调用的托架)移动到行首并覆盖之前写入的文本。
标签: python http go networking python-requests