HTTPRequest
继承
简要描述
能够发送HTTP(S)请求的节点。
描述
能够发送HTTP请求的节点。内部使用的是HTTPClient
可用于发出HTTP请求,即通过HTTP下载或上传文件或网页内容。
使用REST API并打印其返回字段之一的示例:
func _ready():
# 创建一个HTTP请求节点并连接其完成信号。
var http_request = HTTPRequest.new()
add_child(http_request)
http_request.connect("request_completed", self, "_http_request_completed")
# 执行HTTP请求。下面的URL请求会返回一些JSON文本。
var error = http_request.request("https://httpbin.org/get")
if error != OK:
push_error("An error occurred in the HTTP request.")
# 当HTTP请求完成后会被调用
func _http_request_completed(result, response_code, headers, body):
var response = parse_json(body.get_string_from_utf8())
# 将打印HTTPRequest节点使用的用户代理字符串(由httpbin.org识别)。
print(response.headers["User-Agent"])
使用HTTPRequest加载和显示图像的示例:
func _ready():
# 创建一个HTTP请求节点并连接其完成信号。
var http_request = HTTPRequest.new()
add_child(http_request)
http_request.connect("request_completed", self, "_http_request_completed")
# 执行HTTP请求。请求下面的URL会返回一张png图片
var error = http_request.request("https://via.placeholder.com/512")
if error != OK:
push_error("An error occurred in the HTTP request.")
# 当HTTP请求完成后会被调用。
func _http_request_completed(result, response_code, headers, body):
var image = Image.new()
var error = image.load_png_from_buffer(body)
if error != OK:
push_error("Couldn't load the image.")
var texture = ImageTexture.new()
texture.create_from_image(image)
# 在TextureRect节点中显示请求到的图片.
var texture_rect = TextureRect.new()
add_child(texture_rect)
texture_rect.texture = texture
成员
类型 | 属性名 | 默认值 |
---|---|---|
int | body_size_limit | -1 |
int | download_chunk_size | 4096 |
String | download_file | "" |
int | max_redirects | 8 |
int | timeout | 0 |
bool | use_threads | false |
方法
返回值类型 | 方法名称 |
---|---|
void | cancel_request() |
int | get_body_size() const |
int | get_downloaded_bytes() const |
int | get_http_client_status() const |
int | request(url: String, custom_headers: PoolStringArray = PoolStringArray( ), ssl_validate_domain: bool = true, method: int = 0, request_data: String = "") |
信号
- **request_completed**
请求完成时发出。
枚举
enum Result:
- **RESULT_SUCCESS = 0**
请求成功。
- **RESULT_CHUNKED_BODY_SIZE_MISMATCH = 1**
- **RESULT_CANT_CONNECT = 2**
连接时请求失败。
- **RESULT_CANT_RESOLVE = 3**
请求解析失败。
- **RESULT_CONNECTION_ERROR = 4**
由于连接(读/写)错误,请求失败。
- **RESULT_SSL_HANDSHAKE_ERROR = 5**
SSL握手请求失败。
- **RESULT_NO_RESPONSE = 6**
要求尚未回应。
- **RESULT_BODY_SIZE_LIMIT_EXCEEDED = 7**
请求超出了其最大大小限制,请参阅body_size_limit。
- **RESULT_REQUEST_FAILED = 8**
请求失败(当前未使用)。
- **RESULT_DOWNLOAD_FILE_CANT_OPEN = 9**
HTTPRequest无法打开下载文件。
- **RESULT_DOWNLOAD_FILE_WRITE_ERROR = 10**
HTTPRequest无法写入下载文件。
- **RESULT_REDIRECT_LIMIT_REACHED = 11**
请求达到其最大重定向限制,请参阅max_redirects。
- **RESULT_TIMEOUT = 12**
常量
成员说明
- int body_size_limit
Default | -1 |
---|---|
setter | set_body_size_limit(value) |
getter | get_body_size_limit |
- int download_chunk_size
Default | 4096 |
---|---|
setter | set_download_chunk_size(value) |
getter | get_download_chunk_size |
- String download_file
Default | "" |
---|---|
setter | set_download_file(value) |
getter | get_download_file |
- int max_redirects
Default | 8 |
---|---|
setter | set_max_redirects(value) |
getter | get_max_redirects |
- int timeout
Default | 0 |
---|---|
setter | set_timeout(value) |
getter | get_timeout |
- bool use_threads
Default | false |
---|---|
setter | set_use_threads(value) |
getter | is_using_threads |
方法说明
- cancel_request cancel_request()
取消当前请求。
- get_body_size get_body_size() const
返回响应主体的长度。
注意:某些Web服务器可能无法发送正文长度。 在这种情况下,返回的值将是-1
。 如果使用分块传输编码,则正文长度也将为-1
。
- get_downloaded_bytes get_downloaded_bytes() const
返回此HTTPRequest下载的字节数。
- get_http_client_status get_http_client_status() const
返回基础HTTPClient的当前状态。参见HTTPClient.Status。
- request request(url: String, custom_headers: PoolStringArray = PoolStringArray( ), ssl_validate_domain: bool = true, method: int = 0, request_data: String = "")
在基础HTTPClient上创建请求。如果没有配置错误,它将尝试使用HTTPClient.connect_to_host进行连接,并将参数传递到HTTPClient.request上。
如果成功创建请求,则返回OK。 (不表示服务器已响应),如果不在树中则为ERR_UNCONFIGURED,如果仍在处理先前的请求,则为ERR_BUSY,如果给定的字符串不是有效的URL格式,则为ERR_INVALID_PARAMETER,如果不使用线程,并且HTTPClient无法连接到主机则为ERR_CANT_CONNECT 。