python requests post 二进制流_如何从requests POST端点返回的原始二进制文件下载zip文件?...

我需要命中一个POST端点并将响应(二进制数据)保存为zip文件并下载到本地目录。我已经设法到达POST端点并检索二进制数据,但是我很难将其转换或保存为zip文件。在

download_contract函数是我用来到达端点的POST,contract是我正在解析的JSON:def post(cls, url, access_token, obj=None):

return WebResponse.from_requests(requests.post(url, data=None if obj is None else obj.json(), headers=cls.secure_header(access_token) if obj is None else cls.secure_json_header(access_token)))

def download_contract(self, contract):

return SecureWebRequest.post(self.CONTRACT_EXPORT_URL, obj=contract, access_token=self.access_token)

下面的代码是关于我访问端点并检索它的响应并尝试将其保存为zip文件的。在

^{pr2}$

打印时返回什么(上下文.响应)具体如下:WebResponse(200,m_-Jinstrument.xmlmPÍ Â0

žď)B_ÖQ1CđŕYń8ĘIkGßޡ)Ă\ň}|?FłČeqÁťť×=Lť&sRÁĐxÜăcŇĽHżÁ:Źů9

üż7OĚhtÓé`Ä#CŤ3>ÚŇŞV­hŕşwZÂč8yłś 32Wű\ep

WebResponse是(status_code,result),其中status_code对应于HTTP状态码200,result是端点返回的原始数据。在class WebResponse():

STATUS_OK = 200

STATUS_CREATED = 201

STATUS_ACCEPTED = 202

STATUS_NOCONTENT = 204

STATUS_BADREQUEST = 400

STATUS_UNAUTHORIZED = 401

STATUS_FORBIDDEN = 403

STATUS_NOTFOUND = 404

STATUS_CONFLICT = 409

STATUS_INVALID = 422

STATUS_INTERNALSERVER_ERROR = 500

def __init__(self, r, result=None):

self.status_code = r.status_code

self.text = r.text

self.headers = r.headers

self.result = r.text if result is None else result

def __repr__(self):

return 'WebResponse(%s, %s)' % (self.status_code, self.result)

错误回缩:Traceback (most recent call last): File

"/Users/ss/anaconda/envs/autoimport-server/lib/python3.4/site-packages/behave/model.py",

line 1456, in run

match.run(runner.context) File "/Users/ss/anaconda/envs/autoimport-server/lib/python3.4/site-packages/behave/model.py",

line 1903, in run

self.func(context, *args, **kwargs) File "features/steps/miu_connector_steps.py", line 255, in step_impl

with context.services.autoimport.download_contract(DownloadContract(context.program_id,

complete_filename(context.filename))) as response, open(file_name,

'wb') as out_file: AttributeError: exit

你可能感兴趣的:(python,requests,post,二进制流)