0

决定使用 Python 请求来编写 REST 客户端。一切都适用于 POST,但在 GET 上一切都不太顺利。

REST 服务器预先throw 'allowIllegalResourceCall is false.';添加到所有 GET 响应(作为反网络钓鱼机制)。使用标准 python 正则表达式库很容易删除,使用以下语句:(re.sub('\A.*[;]\n', "", r.text)可能不完美,但可以完成工作)。(假设 r 是响应数据结构)

但是,当我将后处理的文本重置回 r.text 时,就会出现问题:r.text = re.sub('\A.*[;]\n', "", r.text)这会引发以下异常:AttributeError: can't set attribute,这会让我相信文本是只读字段。(我想重置文本字段,所以我可以使用 Response 对象的 json 功能)

所以现在我已经解决了背景问题,我想我的问题是有没有人知道解决方案以及为什么 text 是只读属性?(注意,我知道我可以在实际请求源中为 text 属性添加一个设置器,但出于多种原因(不想破坏未来版本的构建、可移植性等) ))。

4

1 回答 1

3

如果您只想解码 JSON,则无需再次设置属性text

import json

json.loads(re.sub('\A.*[;]\n', "", r.text))

如果您迫切需要修复响应正文,请response._content改为设置;首先从.content属性中读取它:

r._content = re.sub('\A.*[;]\n', "", r.content)
于 2013-04-03T17:13:10.563 回答