def test_cors(self): hdr = { "origin": "http://someorigin", "Access-Control-Request-Headers": "authorization, x-api-key" } resp = httpx.options(SRV1 + '/cors-request', headers=hdr) self.assertEqual(204, resp.status_code) self.assertEqual(hdr['origin'], resp.headers.get("access-control-allow-origin")) self.assertEqual(hdr['Access-Control-Request-Headers'], resp.headers.get("Access-Control-Allow-Headers")) self.assertEqual("DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT", resp.headers.get("access-control-allow-methods")) resp = httpx.post(SRV1 + '/cors-request', json={}, headers=hdr) self.assertEqual(hdr['origin'], resp.headers.get("access-control-allow-origin")) self.assertEqual(hdr['Access-Control-Request-Headers'], resp.headers.get("Access-Control-Allow-Headers")) self.assertEqual("DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT", resp.headers.get("access-control-allow-methods")) self.assertEqual(201, resp.status_code) resp = httpx.options(SRV1 + '/cors-request-overridden', headers=hdr) self.assertEqual(401, resp.status_code) resp = httpx.options(SRV1 + '/nonexistent', headers=hdr) self.assertEqual(404, resp.status_code) resp = httpx.options(SRV1 + '/cors-request') self.assertEqual(404, resp.status_code) # maybe it should be 400
async def test_http_methods(client): async with respx.mock: url = "https://foo.bar" route = respx.get(url, path="/") % 404 respx.post(url, path="/").respond(200) respx.post(url, path="/").respond(201) respx.put(url, path="/").respond(202) respx.patch(url, path="/").respond(500) respx.delete(url, path="/").respond(204) respx.head(url, path="/").respond(405) respx.options(url, path="/").respond(status_code=501) respx.request("GET", url, path="/baz/").respond(status_code=204) url += "/" response = httpx.get(url) assert response.status_code == 404 response = await client.get(url) assert response.status_code == 404 response = httpx.get(url + "baz/") assert response.status_code == 204 response = await client.get(url + "baz/") assert response.status_code == 204 response = httpx.post(url) assert response.status_code == 201 response = await client.post(url) assert response.status_code == 201 response = httpx.put(url) assert response.status_code == 202 response = await client.put(url) assert response.status_code == 202 response = httpx.patch(url) assert response.status_code == 500 response = await client.patch(url) assert response.status_code == 500 response = httpx.delete(url) assert response.status_code == 204 response = await client.delete(url) assert response.status_code == 204 response = httpx.head(url) assert response.status_code == 405 response = await client.head(url) assert response.status_code == 405 response = httpx.options(url) assert response.status_code == 501 response = await client.options(url) assert response.status_code == 501 assert route.called is True assert respx.calls.call_count == 8 * 2
async def test_http_methods(client): async with respx.HTTPXMock() as httpx_mock: url = "https://foo.bar/" m = httpx_mock.get(url, status_code=404) httpx_mock.post(url, status_code=201) httpx_mock.put(url, status_code=202) httpx_mock.patch(url, status_code=500) httpx_mock.delete(url, status_code=204) httpx_mock.head(url, status_code=405) httpx_mock.options(url, status_code=501) response = httpx.get(url) assert response.status_code == 404 response = await client.get(url) assert response.status_code == 404 response = httpx.post(url) assert response.status_code == 201 response = await client.post(url) assert response.status_code == 201 response = httpx.put(url) assert response.status_code == 202 response = await client.put(url) assert response.status_code == 202 response = httpx.patch(url) assert response.status_code == 500 response = await client.patch(url) assert response.status_code == 500 response = httpx.delete(url) assert response.status_code == 204 response = await client.delete(url) assert response.status_code == 204 response = httpx.head(url) assert response.status_code == 405 response = await client.head(url) assert response.status_code == 405 response = httpx.options(url) assert response.status_code == 501 response = await client.options(url) assert response.status_code == 501 assert m.called is True assert httpx_mock.stats.call_count == 7 * 2
#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File : 1_request_method.py @Time : 2021-02-23 @Author : EvilRecluse @Contact : https://github.com/RecluseXU @Desc : 常用的请求方法GET, POST, PUT, DELETE, HEAD, OPTIONS ''' # here put the import lib import httpx # 常用的请求方法GET, POST, PUT, DELETE, HEAD, OPTIONS r = httpx.get('https://httpbin.org/get') r = httpx.post('https://httpbin.org/post', data={'key': 'value'}) r = httpx.put('https://httpbin.org/put', data={'key': 'value'}) r = httpx.delete('https://httpbin.org/delete') r = httpx.head('https://httpbin.org/get') r = httpx.options('https://httpbin.org/get') # 设置headers headers = {'user-agent': 'my-app/0.0.1'} r = httpx.get('http://httpbin.org/headers', headers=headers) print(r.json())
def axios(req): fres = {'status': 200, 'headers': {}, 'data': ''} headers = {} if 'headers' in req: headers = req['headers'] if 'content-type' not in headers or 'Content-Type' not in headers: headers[ 'content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8' if 'user-agent' not in headers: try: headers['user-agent'] = uagent[CONFIG['CONFIG_Axios'] ['uagent']]['header'] except Exception as e: console.error(e) headers[ 'user-agent'] = 'Mozilla/5.0 (Linux; U; elecV2P; x64) ePhone Super Max Plus++' proxies = {} timeout = 5 try: if CONFIG['CONFIG_Axios']['proxy']: proxy = CONFIG['CONFIG_Axios']['proxy'] if 'host' not in proxy: proxy['host'] = 'localhost' if 'port' not in proxy: proxy['port'] = 8001 phttp = proxy['host'] + ':' + str(proxy['port']) if 'auth' in proxy and 'username' in proxy[ 'auth'] and 'password' in proxy['auth']: phttp = proxy['auth']['username'] + ':' + proxy['auth'][ 'password'] + '@' + phttp proxies['http://'] = 'http://' + phttp if CONFIG['CONFIG_Axios']['timeout']: timeout = round(CONFIG['CONFIG_Axios']['timeout'] / 1000, 2) except Exception as e: console.error(e) if isinstance(req, str): req = {'url': req, 'method': 'get'} if 'url' not in req: fres['status'] = -1 fres['data'] = 'axios error: a request url is expect' console.error(fres['data']) return fres if 'body' in req: req['data'] = req['body'] if 'data' not in req: req['data'] = '' if 'method' not in req: req['method'] = 'get' console.debug('axios request:', req, 'proxies:', proxies, 'timeout:', timeout) try: req['method'] = req['method'].lower() if req['method'] == 'get': res = httpx.get(req['url'], headers=headers, proxies=proxies, timeout=timeout) elif req['method'] == 'post': res = httpx.post(req['url'], headers=headers, data=req['data'], proxies=proxies, timeout=timeout) elif req['method'] == 'put': res = httpx.put(req['url'], headers=headers, data=req['data'], proxies=proxies, timeout=timeout) elif req['method'] == 'delete': res = httpx.delete(req['url'], headers=headers, data=req['data'], proxies=proxies, timeout=timeout) elif req['method'] == 'options': res = httpx.options(req['url'], headers=headers, data=req['data'], proxies=proxies, timeout=timeout) else: class res: status_code = -1 headers = {} text = 'unknow request method ' + req['method'] console.error('unknow request method', req['method']) fres['status'] = res.status_code fres['headers'] = res.headers fres['data'] = res.text except Exception as e: console.error(e) fres['status'] = -1 fres['data'] = 'axios ' + req['method'] + ' ' + req[ 'url'] + ' error: ' + str(e) return fres
def test_options(server): response = httpx.options(server.url) assert response.status_code == 200 assert response.reason_phrase == "OK"
def test_options(server): response = httpx.options("http://127.0.0.1:8000/") assert response.status_code == 200 assert response.reason_phrase == "OK"
import httpx import ssl httpx.get("url") # $ clientRequestUrlPart="url" httpx.post("url") # $ clientRequestUrlPart="url" httpx.patch("url") # $ clientRequestUrlPart="url" httpx.options("url") # $ clientRequestUrlPart="url" httpx.request("method", url="url") # $ clientRequestUrlPart="url" httpx.stream("method", url="url") # $ clientRequestUrlPart="url" client = httpx.Client() response = client.get("url") # $ clientRequestUrlPart="url" response = client.post("url") # $ clientRequestUrlPart="url" response = client.patch("url") # $ clientRequestUrlPart="url" response = client.options("url") # $ clientRequestUrlPart="url" response = client.request("method", url="url") # $ clientRequestUrlPart="url" response = client.stream("method", url="url") # $ clientRequestUrlPart="url" async def async_test(): client = httpx.AsyncClient() response = await client.get("url") # $ clientRequestUrlPart="url" response = await client.post("url") # $ clientRequestUrlPart="url" response = await client.patch("url") # $ clientRequestUrlPart="url" response = await client.options("url") # $ clientRequestUrlPart="url" response = await client.request("method", url="url") # $ clientRequestUrlPart="url" response = await client.stream("method", url="url") # $ clientRequestUrlPart="url" # ============================================================================== # Disabling certificate validation # ==============================================================================
requests.put('https://gmail.com', timeout=30, verify=True) requests.put('https://gmail.com', timeout=30, verify=False) requests.delete('https://gmail.com', timeout=30, verify=True) requests.delete('https://gmail.com', timeout=30, verify=False) requests.patch('https://gmail.com', timeout=30, verify=True) requests.patch('https://gmail.com', timeout=30, verify=False) requests.options('https://gmail.com', timeout=30, verify=True) requests.options('https://gmail.com', timeout=30, verify=False) requests.head('https://gmail.com', timeout=30, verify=True) requests.head('https://gmail.com', timeout=30, verify=False) httpx.request('GET', 'https://gmail.com', verify=True) httpx.request('GET', 'https://gmail.com', verify=False) httpx.get('https://gmail.com', verify=True) httpx.get('https://gmail.com', verify=False) httpx.options('https://gmail.com', verify=True) httpx.options('https://gmail.com', verify=False) httpx.head('https://gmail.com', verify=True) httpx.head('https://gmail.com', verify=False) httpx.post('https://gmail.com', verify=True) httpx.post('https://gmail.com', verify=False) httpx.put('https://gmail.com', verify=True) httpx.put('https://gmail.com', verify=False) httpx.patch('https://gmail.com', verify=True) httpx.patch('https://gmail.com', verify=False) httpx.delete('https://gmail.com', verify=True) httpx.delete('https://gmail.com', verify=False) httpx.stream('https://gmail.com', verify=True) httpx.stream('https://gmail.com', verify=False) httpx.Client() httpx.Client(verify=False)