def deserialize_prepared_request(serialized): p = PreparedRequest() p.body = serialized['body'] p.headers = CaseInsensitiveDict(serialized['headers']) p.method = serialized['method'] p.url = serialized['uri'] return p
def copy_request(request): """Copy a Requests PreparedRequest.""" new_request = PreparedRequest() new_request.method = request.method new_request.url = request.url new_request.body = request.body new_request.hooks = request.hooks new_request.headers = request.headers.copy() return new_request
def _prepare_body(self, data, files=None): """创建post需要的body数据 :param data: post 参数 :type data: dict(post_param=value) :param: files: post 文件流数据 :type: files: dict(filename=file_object) """ _prepare = PreparedRequest() _prepare.headers = {} _prepare.prepare_body(data=data, files=files) data.update(files) return urlencode(data)
def deserialize_prepared_request(serialized): p = PreparedRequest() p._cookies = RequestsCookieJar() body = serialized['body'] if isinstance(body, dict): original_body = body.get('string') p.body = original_body or base64.b64decode( body.get('base64_string', '').encode()) else: p.body = body h = [(k, from_list(v)) for k, v in serialized['headers'].items()] p.headers = CaseInsensitiveDict(h) p.method = serialized['method'] p.url = serialized['uri'] return p
def test_request_context( self, path: str = '/', method: str = 'GET', *, scheme: str = 'http', headers: Union[dict, CIMultiDict] = None, data: Union[AnyStr, dict] = None) -> RequestContext: headers, path, query_string = make_test_headers_path_and_query_string( self, path, headers=headers) if headers and headers.get('Content-Type', None) == 'application/json': body_data = dumps(data).encode() if data else b'' elif data: if isinstance(data, str): headers.setdefault('Content-Type', 'application/x-www-form-urlencoded') body_data = data.encode() else: form = {} files = {} for key, value in data.items(): if isinstance(value, (list, tuple)): files[key] = value else: form[key] = value prep = PreparedRequest() prep.headers = {} prep.prepare_body(data=form or None, files=files) body_data = prep.body headers.update(prep.headers) else: body_data = b'' request = self.request_class(method, scheme, path, query_string, headers) request.body.set_result(body_data) return self.request_context(request)
import tornado import tornado.httpclient as httpclient asyncHTTPClient = httpclient.AsyncHTTPClient() c = 0 file = 'test.jpg' files = [ ('image', ('%d' % c, open(file, 'rb'), 'image/jpg')), ] data = { 'filename': 'test', } def on_response(response): pass if __name__ == "__main__": IP = '106.14.70.249' url = 'http://%s:9331/api/image_save' % IP prepared_request = PreparedRequest() prepared_request.method = 'post' prepared_request.headers = {} prepared_request.prepare_body(data, files) request = tornado.httpclient.HTTPRequest(url=url, headers=prepared_request.headers, method='POST', body=prepared_request.body) asyncHTTPClient.fetch(request, on_response) tornado.ioloop.IOLoop.instance().start() # start the tornado ioloop to
def __call__(self, r: PreparedRequest): if not isinstance(r.headers, Mapping): r.headers = {} r.headers.update({'Authorization': 'Bearer {}'.format(self.token)}) return r