决定使用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属性添加一个setter,但是由于很多原因(不想在未来的版本,可移植性等方面打破构建) ))。
答案 0 :(得分:2)
如果您只想解码JSON,则 需要再次设置text
属性:
import json
json.loads(re.sub('\A.*[;]\n', "", r.text))
如果您需要修复响应正文,请设置response._content
;首先从.content
属性中读取它:
r._content = re.sub('\A.*[;]\n', "", r.content)