Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
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