我需要命中一个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>ÚŇŞVhŕş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