目录
- UrlRequest
UrlRequestUrlRequestBaseUrlRequestBase.cancel()UrlRequestBase.chunk_sizeUrlRequestBase.decode_result()UrlRequestBase.errorUrlRequestBase.is_finishedUrlRequestBase.req_bodyUrlRequestBase.req_headersUrlRequestBase.resp_headersUrlRequestBase.resp_statusUrlRequestBase.resultUrlRequestBase.run()UrlRequestBase.urlUrlRequestBase.wait()
UrlRequestRequestsUrlRequestUrllib
UrlRequest¶
在 1.0.8 版本加入.
您可以使用 UrlRequest 在网络上发起异步请求,并在请求完成时获取结果。其设计理念与 JavaScript 中的 XHR 对象相同。
如果 Content-Type 为 application/json,内容也会被解码,并且结果会自动通过 json.loads 处理。
创建请求的语法如下:
from kivy.network.urlrequest import UrlRequest
req = UrlRequest(url, on_success, on_redirect, on_failure, on_error,
on_progress, req_body, req_headers, chunk_size,
timeout, method, decode, debug, file_path, ca_file,
verify)
只有第一个参数是必需的:其余参数都是可选的。默认情况下,会发送一个“GET”请求。如果 UrlRequest.req_body 不为 None,则会发送一个“POST”请求。您需要根据自身需求调整 UrlRequest.req_headers,而请求的响应将作为 on_success 事件回调函数中名为“result”的参数进行访问。
获取JSON的示例:
def got_json(req, result):
for key, value in req.resp_headers.items():
print('{}: {}'.format(key, value))
req = UrlRequest('https://httpbin.org/headers', got_json)
发布数据的示例(改编自httplib示例):
import urllib
def bug_posted(req, result):
print('Our bug is posted!')
print(result)
params = urllib.urlencode({'@number': 12524, '@type': 'issue',
'@action': 'show'})
headers = {'Content-type': 'application/x-www-form-urlencoded',
'Accept': 'text/plain'}
req = UrlRequest('bugs.python.org', on_success=bug_posted, req_body=params,
req_headers=headers)
如果你想要同步请求,可以调用 wait() 方法。
- kivy.network.urlrequest.UrlRequest¶
UrlRequestUrllib的别名
- class kivy.network.urlrequest.UrlRequestBase(url, on_success=None, on_redirect=None, on_failure=None, on_error=None, on_progress=None, req_body=None, req_headers=None, chunk_size=8192, timeout=None, method=None, decode=True, debug=False, file_path=None, ca_file=None, verify=True, proxy_host=None, proxy_port=None, proxy_headers=None, user_agent=None, on_cancel=None, on_finish=None, cookies=None, auth=None)[源代码]¶
基类:
Thread一个UrlRequest。使用方法请参阅模块文档。
在 1.5.1 版本发生变更: 添加 debug 参数
在 1.0.10 版本发生变更: 添加 method 参数
在 1.8.0 版本发生变更: 新增参数 decode。新增参数 file_path。新增参数 on_redirect。新增参数 on_failure。
在 1.9.1 版本发生变更: 新增参数 ca_file。新增参数 verify。
在 1.10.0 版本发生变更: 新增了参数 proxy_host、proxy_port 和 proxy_headers。
在 1.11.0 版本发生变更: 新增参数 on_cancel。
在 2.2.0 版本发生变更: 新增参数 on_finish。新增参数 auth。
- 参数:
- url:字符串
完整的URL字符串用于调用。
- on_success:回调函数(request, result)
获取结果后要调用的回调函数。
- on_redirect: 回调函数(request, result)
服务器返回重定向时要调用的回调函数。
- on_failure:回调函数(request, result)
服务器返回客户端或服务器错误时调用的回调函数。
- on_error:回调函数(request, error)
发生错误时要调用的回调函数。
- on_progress:回调函数(request, current_size, total_size)
用于报告下载进度的回调函数。如果HTTP响应中未报告Content-Length,`total_size`可能为-1。每次读取完`chunk_size`后,将调用此回调函数。
- on_cancel: 回调函数(request)
用户通过.cancel()方法请求取消下载操作时调用的回调函数。
- on_finish: 回调函数(request)
请求完成时调用的附加回调函数。
- req_body:字符串,默认为 None
请求中发送的数据。如果该数据不为None,则将执行POST请求而非GET请求。
- req_headers:字典,默认为 None
要添加到请求中的自定义标头。
- chunk_size:整数,默认值为8192
每次读取的块大小,仅在设置了`on_progress`回调时使用。如果将其设置得过小,会触发大量`on_progress`回调,从而降低下载速度。若希望获得最大下载速度,请增大`chunk_size`或不要使用``on_progress``。
- timeout:整数,默认为 None
如果设置,阻塞操作将在这么多秒后超时。
- method:字符串,默认为 'GET'`(如果指定了 ``body` 则为 'POST')
要使用的HTTP方法。
- decode:布尔值,默认为 True
如果为 False,则跳过对响应的解码。
- debug:布尔值,默认为 False
如果为True,将使用Logger.debug打印关于URL访问/进度/错误的信息。
- file_path:str,默认为 None
如果设置了该属性,UrlRequest 的结果将写入此路径,而不是保存在内存中。
- ca_file:字符串,默认为 None
指定用于验证HTTPS证书的SSL CA证书文件路径
- verify:布尔值,默认为 True
如果为 False,则禁用 SSL CA 证书验证。
- proxy_host:字符串,默认为 None
如果设置,则指定此连接使用的代理主机。
- proxy_port:整数,默认为 None
如果设置了此项,并且同时设置了 proxy_host,则使用此端口连接到代理服务器。
- proxy_headers:字典,默认为 None
如果设置了该属性,并且同时设置了 proxy_host,则这些头部信息将用于发送到代理服务器的
CONNECT请求中。- auth:HTTPBasicAuth,默认为 None
如果设置,请求将使用基本认证(basicauth)进行身份验证。仅在“Requests”实现中使用。
- property chunk_size¶
返回数据块的大小,仅在“进度”模式下使用(当设置了on_progress回调时)。
- property error¶
返回请求的错误信息。此值在请求完成之前不会被确定。
- property is_finished¶
如果请求已完成,无论成功还是失败,都返回True。
- req_body¶
在 __init__ 中传递的请求体
- req_headers¶
在 __init__ 中传递的请求头
- property resp_headers¶
如果请求已完成,则返回包含响应头的字典。否则,将返回None。
- property resp_status¶
如果请求已完成,则返回响应的状态码,否则返回None。
- property result¶
返回请求的结果。此值在请求完成前不会被确定。
- run()[源代码]¶
表示线程活动的方法。
你可以在子类中重写此方法。标准的run()方法会调用传递给对象构造函数的可调用对象(作为target参数),如果存在的话,并使用从args和kwargs参数中分别获取的顺序参数和关键字参数。
- url¶
请求的URL
- wait(delay=0.5)[源代码]¶
等待请求完成(直到
resp_status不为 None)备注
此方法旨在主线程中使用,回调将从您调用的同一线程中分发。
在 1.1.0 版本加入.
- class kivy.network.urlrequest.UrlRequestRequests(url, on_success=None, on_redirect=None, on_failure=None, on_error=None, on_progress=None, req_body=None, req_headers=None, chunk_size=8192, timeout=None, method=None, decode=True, debug=False, file_path=None, ca_file=None, verify=True, proxy_host=None, proxy_port=None, proxy_headers=None, user_agent=None, on_cancel=None, on_finish=None, cookies=None, auth=None)[源代码]¶
- class kivy.network.urlrequest.UrlRequestUrllib(url, on_success=None, on_redirect=None, on_failure=None, on_error=None, on_progress=None, req_body=None, req_headers=None, chunk_size=8192, timeout=None, method=None, decode=True, debug=False, file_path=None, ca_file=None, verify=True, proxy_host=None, proxy_port=None, proxy_headers=None, user_agent=None, on_cancel=None, on_finish=None, cookies=None, auth=None)[源代码]¶