在 Python 中制作虚假的 HTTP 响应
Making a fake HTTP response in Python
作为初学者,我正在尝试进行伪造的 HTTP 响应。我想到的方法是制作 class requests.models.Response()
的对象,然后设置其属性:
def getFakeHTTPResponse(statusCode, text):
response = requests.models.Response()
response.status_code = statusCode
response.text = text
return response
上面的功能应该可以。但是我收到错误:"AttributeError: can't set attribute."
这让我感到疑惑,因为可以获取 HTTP 响应的文本属性,但无法设置它。此外,这对 status_code
属性完全没问题,但我收到文本属性的错误消息。
你有什么建议使用这个 class requests.models.Response()
来做出虚假回应?
.text
和.content
方法都是用@property
实现的,可以读,不能写。需要设置._content
(被.content
使用)和.encoding
(被.text
使用),即
import requests
r = requests.models.Response()
r.status_code = 200
r._content = "sometext".encode("utf-8")
r.encoding = "utf-8"
print(r.text)
输出
sometext
作为初学者,我正在尝试进行伪造的 HTTP 响应。我想到的方法是制作 class requests.models.Response()
的对象,然后设置其属性:
def getFakeHTTPResponse(statusCode, text):
response = requests.models.Response()
response.status_code = statusCode
response.text = text
return response
上面的功能应该可以。但是我收到错误:"AttributeError: can't set attribute."
这让我感到疑惑,因为可以获取 HTTP 响应的文本属性,但无法设置它。此外,这对 status_code
属性完全没问题,但我收到文本属性的错误消息。
你有什么建议使用这个 class requests.models.Response()
来做出虚假回应?
.text
和.content
方法都是用@property
实现的,可以读,不能写。需要设置._content
(被.content
使用)和.encoding
(被.text
使用),即
import requests
r = requests.models.Response()
r.status_code = 200
r._content = "sometext".encode("utf-8")
r.encoding = "utf-8"
print(r.text)
输出
sometext