:param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """
chunked = not (request.body is None or 'Content-Length' in request.headers)
if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError as e: # this may raise a string formatting error. err = ("Invalid timeout {}. Pass a (connect, read) " "timeout tuple, or a single float to set " "both timeouts to the same value".format(timeout)) raise ValueError(err) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout)
try: if not chunked: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout )
# Send the request. else: if hasattr(conn, 'proxy_pool'): conn = conn.proxy_pool
try: skip_host = 'Host' in request.headers low_conn.putrequest(request.method, url, skip_accept_encoding=True, skip_host=skip_host)
for header, value in request.headers.items(): low_conn.putheader(header, value)
low_conn.endheaders()
for i in request.body: low_conn.send(hex(len(i))[2:].encode('utf-8')) low_conn.send(b'\r\n') low_conn.send(i) low_conn.send(b'\r\n') low_conn.send(b'0\r\n\r\n')
# Receive the response from the server try: # For Python 2.7, use buffering of HTTP responses r = low_conn.getresponse(buffering=True) except TypeError: # For compatibility with Python 3.3+ r = low_conn.getresponse()
resp = HTTPResponse.from_httplib( r, pool=conn, connection=low_conn, preload_content=False, decode_content=False ) except: # If we hit any problems here, clean up the connection. # Then, reraise so that we can handle the actual exception. low_conn.close() raise
except (ProtocolError, socket.error) as err: raise ConnectionError(err, request=request)
except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request)
if isinstance(e.reason, ResponseError): raise RetryError(e, request=request)
if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request)
if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request)
raise ConnectionError(e, request=request)
except ClosedPoolError as e: raise ConnectionError(e, request=request)
except _ProxyError as e: raise ProxyError(e)
except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='127.0.0.1', port=50527): Read timed out. (read timeout=60)
ide暂时不支持
lib/pages/mobile_authorize_page.py:21: in authorize
self.native.allow_get_user_phone()
../lib/python3.8/site-packages/minium/native/wx_native/androidnative.py:246: in allow_get_user_phone
self.allow_authorize(answer)
../lib/python3.8/site-packages/minium/native/wx_native/androidnative.py:194: in allow_authorize
return self._handle_btn("允许")
../lib/python3.8/site-packages/minium/native/wx_native/androidnative.py:263: in _handle_btn
ret = do()
../lib/python3.8/site-packages/minium/native/wx_native/androidnative.py:260: in do
return self.e.cls_name("android.widget.Button").focusable(True).text(btn_text).click_if_exists(timeout)
../lib/python3.8/site-packages/minium/native/lib/at/core/element.py:739: in click_if_exists
if self.exists(0.5):
../lib/python3.8/site-packages/minium/native/lib/at/core/element.py:773: in exists
return self.wait_exists(seconds)
../lib/python3.8/site-packages/minium/native/lib/at/core/element.py:461: in wait_exists
uiview = self.get_view(timeout=0.5)
../lib/python3.8/site-packages/minium/native/lib/at/core/element.py:445: in get_view
view = self._get_view()
../lib/python3.8/site-packages/minium/native/lib/at/core/element.py:428: in _get_view
for ui_view_list in self.jd.dump_all_views():
../lib/python3.8/site-packages/minium/native/lib/at/core/javadriver.py:338: in dump_all_views
res = self.request_at_device("dumpXmls", [])
../lib/python3.8/site-packages/minium/native/lib/at/core/javadriver.py:383: in request_at_device
return self.request_action(self.ACTION_AT_DEVICE, method, params)
../lib/python3.8/site-packages/minium/native/lib/at/core/javadriver.py:371: in request_action
return self.request_java(action, params)
../lib/python3.8/site-packages/minium/native/lib/at/core/javadriver.py:453: in request_java
return self.do_request(action, http_params, **kwargs)
../lib/python3.8/site-packages/minium/native/lib/at/core/basedriver.py:161: in do_request
ret = self.request(method.lower(), url, http_params, timeout=timeout, **kwargs)
../lib/python3.8/site-packages/minium/native/lib/at/core/basedriver.py:178: in request
res = session.request(method, url, params=params, **kwargs)
../lib/python3.8/site-packages/requests/sessions.py:529: in request
resp = self.send(prep, **send_kwargs)
../lib/python3.8/site-packages/requests/sessions.py:645: in send
r = adapter.send(request, **kwargs)
真机调用allow_get_user_phone报错,是哪里调用的不对?
proxies = OrderedDict()
def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
"""Sends PreparedRequest object. Returns Response object.
:param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
:param stream: (optional) Whether to stream the request content.
:param timeout: (optional) How long to wait for the server to send
data before giving up, as a float, or a :ref:`(connect timeout,
read timeout) <timeouts>` tuple.
:type timeout: float or tuple or urllib3 Timeout object
:param verify: (optional) Either a boolean, in which case it controls whether
we verify the server's TLS certificate, or a string, in which case it
must be a path to a CA bundle to use
:param cert: (optional) Any user-provided SSL certificate to be trusted.
:param proxies: (optional) The proxies dictionary to apply to the request.
:rtype: requests.Response
"""
try:
conn = self.get_connection(request.url, proxies)
except LocationValueError as e:
raise InvalidURL(e, request=request)
self.cert_verify(conn, request.url, verify, cert)
url = self.request_url(request, proxies)
self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
chunked = not (request.body is None or 'Content-Length' in request.headers)
if isinstance(timeout, tuple):
try:
connect, read = timeout
timeout = TimeoutSauce(connect=connect, read=read)
except ValueError as e:
# this may raise a string formatting error.
err = ("Invalid timeout {}. Pass a (connect, read) "
"timeout tuple, or a single float to set "
"both timeouts to the same value".format(timeout))
raise ValueError(err)
elif isinstance(timeout, TimeoutSauce):
pass
else:
timeout = TimeoutSauce(connect=timeout, read=timeout)
try:
if not chunked:
resp = conn.urlopen(
method=request.method,
url=url,
body=request.body,
headers=request.headers,
redirect=False,
assert_same_host=False,
preload_content=False,
decode_content=False,
retries=self.max_retries,
timeout=timeout
)
# Send the request.
else:
if hasattr(conn, 'proxy_pool'):
conn = conn.proxy_pool
low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT)
try:
skip_host = 'Host' in request.headers
low_conn.putrequest(request.method,
url,
skip_accept_encoding=True,
skip_host=skip_host)
for header, value in request.headers.items():
low_conn.putheader(header, value)
low_conn.endheaders()
for i in request.body:
low_conn.send(hex(len(i))[2:].encode('utf-8'))
low_conn.send(b'\r\n')
low_conn.send(i)
low_conn.send(b'\r\n')
low_conn.send(b'0\r\n\r\n')
# Receive the response from the server
try:
# For Python 2.7, use buffering of HTTP responses
r = low_conn.getresponse(buffering=True)
except TypeError:
# For compatibility with Python 3.3+
r = low_conn.getresponse()
resp = HTTPResponse.from_httplib(
r,
pool=conn,
connection=low_conn,
preload_content=False,
decode_content=False
)
except:
# If we hit any problems here, clean up the connection.
# Then, reraise so that we can handle the actual exception.
low_conn.close()
raise
except (ProtocolError, socket.error) as err:
raise ConnectionError(err, request=request)
except MaxRetryError as e:
if isinstance(e.reason, ConnectTimeoutError):
# TODO: Remove this in 3.0.0: see #2811
if not isinstance(e.reason, NewConnectionError):
raise ConnectTimeout(e, request=request)
if isinstance(e.reason, ResponseError):
raise RetryError(e, request=request)
if isinstance(e.reason, _ProxyError):
raise ProxyError(e, request=request)
if isinstance(e.reason, _SSLError):
# This branch is for urllib3 v1.22 and later.
raise SSLError(e, request=request)
raise ConnectionError(e, request=request)
except ClosedPoolError as e:
raise ConnectionError(e, request=request)
except _ProxyError as e:
raise ProxyError(e)
except (_SSLError, _HTTPError) as e:
if isinstance(e, _SSLError):
# This branch is for urllib3 versions earlier than v1.22
raise SSLError(e, request=request)
elif isinstance(e, ReadTimeoutError):
> raise ReadTimeout(e, request=request)
E requests.exceptions.ReadTimeout: HTTPConnectionPool(host='127.0.0.1', port=50527): Read timed out. (read timeout=60)
../lib/python3.8/site-packages/requests/adapters.py:532: ReadTimeout