HTTPRequest

Inherits: Node < Object

Un nodo con la capacidad de enviar peticiones HTTP(S).

Descripción

A node with the ability to send HTTP requests. Uses HTTPClient internally.

Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP.

Warning: See the notes and warnings on HTTPClient for limitations, especially regarding SSL security.

Example of contacting a REST API and printing one of its returned fields:

func _ready():
    # Create an HTTP request node and connect its completion signal.
    var http_request = HTTPRequest.new()
    add_child(http_request)
    http_request.connect("request_completed", self, "_http_request_completed")

    # Perform a GET request. The URL below returns JSON as of writing.
    var error = http_request.request("https://httpbin.org/get")
    if error != OK:
        push_error("An error occurred in the HTTP request.")

    # Perform a POST request. The URL below returns JSON as of writing.
    # Note: Don't make simultaneous requests using a single HTTPRequest node.
    # The snippet below is provided for reference only.
    var body = {"name": "Godette"}
    error = http_request.request("https://httpbin.org/post", [], true, HTTPClient.METHOD_POST, body)
    if error != OK:
        push_error("An error occurred in the HTTP request.")


# Called when the HTTP request is completed.
func _http_request_completed(result, response_code, headers, body):
    var response = parse_json(body.get_string_from_utf8())

    # Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org).
    print(response.headers["User-Agent"])

Example of loading and displaying an image using HTTPRequest:

func _ready():
    # Create an HTTP request node and connect its completion signal.
    var http_request = HTTPRequest.new()
    add_child(http_request)
    http_request.connect("request_completed", self, "_http_request_completed")

    # Perform the HTTP request. The URL below returns a PNG image as of writing.
    var error = http_request.request("https://via.placeholder.com/512")
    if error != OK:
        push_error("An error occurred in the HTTP request.")


# Called when the HTTP request is completed.
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)

    # Display the image in a TextureRect node.
    var texture_rect = TextureRect.new()
    add_child(texture_rect)
    texture_rect.texture = texture

Tutoriales

Propiedades

int

body_size_limit

-1

int

download_chunk_size

65536

String

download_file

""

int

max_redirects

8

int

timeout

0

bool

use_threads

false

Métodos

void

cancel_request ( )

int

get_body_size ( ) const

int

get_downloaded_bytes ( ) const

Status

get_http_client_status ( ) const

Error

request ( String url, PoolStringArray custom_headers=PoolStringArray( ), bool ssl_validate_domain=true, Method method=0, String request_data="" )

Error

request_raw ( String url, PoolStringArray custom_headers=PoolStringArray( ), bool ssl_validate_domain=true, Method method=0, PoolByteArray request_data_raw=PoolByteArray( ) )

void

set_http_proxy ( String host, int port )

void

set_https_proxy ( String host, int port )

Señales

Emitido cuando se completa una solicitud.

Enumeraciones

enum Result:

  • RESULT_SUCCESS = 0 --- Solicitud con éxito.

  • RESULT_CHUNKED_BODY_SIZE_MISMATCH = 1

  • RESULT_CANT_CONNECT = 2 --- La solicitud falló mientras se conectaba.

  • RESULT_CANT_RESOLVE = 3 --- La solicitud falló al resolverse.

  • RESULT_CONNECTION_ERROR = 4 --- La solicitud falló debido a un error de conexión (lectura/escritura).

  • RESULT_SSL_HANDSHAKE_ERROR = 5 --- La solicitud falló en el handshake del SSL.

  • RESULT_NO_RESPONSE = 6 --- La solicitud no tiene respuesta (todavía).

  • RESULT_BODY_SIZE_LIMIT_EXCEEDED = 7 --- La solicitud excedió su límite de tamaño máximo, ver body_size_limit.

  • RESULT_REQUEST_FAILED = 8 --- Solicitud fallida (actualmente no utilizada).

  • RESULT_DOWNLOAD_FILE_CANT_OPEN = 9 --- HTTPRequest no pudo abrir el archivo descargado.

  • RESULT_DOWNLOAD_FILE_WRITE_ERROR = 10 --- HTTPRequest no pudo escribir el archivo descargado.

  • RESULT_REDIRECT_LIMIT_REACHED = 11 --- La solicitud alcanzó su límite máximo de redireccionamiento, ver max_redirects.

  • RESULT_TIMEOUT = 12

Descripciones de Propiedades

  • int body_size_limit

Default

-1

Setter

set_body_size_limit(value)

Getter

get_body_size_limit()

Tamaño máximo permitido para los cuerpos de la respuesta.


  • int download_chunk_size

Default

65536

Setter

set_download_chunk_size(value)

Getter

get_download_chunk_size()

The size of the buffer used and maximum bytes to read per iteration. See HTTPClient.read_chunk_size.

Set this to a lower value (e.g. 4096 for 4 KiB) when downloading small files to decrease memory usage at the cost of download speeds.


Default

""

Setter

set_download_file(value)

Getter

get_download_file()

El archivo para descargar. dará salida a cualquier archivo recibido en él.


  • int max_redirects

Default

8

Setter

set_max_redirects(value)

Getter

get_max_redirects()

Número máximo de redirecciones permitidas.


Default

0

Setter

set_timeout(value)

Getter

get_timeout()


Default

false

Setter

set_use_threads(value)

Getter

is_using_threads()

Si true, se utiliza el multihilo para mejorar el rendimiento.

Descripciones de Métodos

  • void cancel_request ( )

Cancela la solicitud actual.


  • int get_body_size ( ) const

Devuelve la longitud del cuerpo de respuesta.

Nota: Algunos servidores web pueden no enviar la longitud del cuerpo. En este caso, el valor devuelto será -1. Si se utiliza la codificación de transferencia de trozos, la longitud del cuerpo también será -1.


  • int get_downloaded_bytes ( ) const

Devuelve la cantidad de bytes que esta HTTPRequest ha descargado.


  • Status get_http_client_status ( ) const

Devuelve el estado actual del HTTPClient subyacente. Véase Status.


Creates request on the underlying HTTPClient. If there is no configuration errors, it tries to connect using HTTPClient.connect_to_host and passes parameters onto HTTPClient.request.

Returns @GlobalScope.OK if request is successfully created. (Does not imply that the server has responded), @GlobalScope.ERR_UNCONFIGURED if not in the tree, @GlobalScope.ERR_BUSY if still processing previous request, @GlobalScope.ERR_INVALID_PARAMETER if given string is not a valid URL format, or @GlobalScope.ERR_CANT_CONNECT if not using thread and the HTTPClient cannot connect to host.

Note: When method is HTTPClient.METHOD_GET, the payload sent via request_data might be ignored by the server or even cause the server to reject the request (check RFC 7231 section 4.3.1 for more details). As a workaround, you can send data as a query string in the URL. See String.http_escape for an example.


Creates request on the underlying HTTPClient using a raw array of bytes for the request body. If there is no configuration errors, it tries to connect using HTTPClient.connect_to_host and passes parameters onto HTTPClient.request.

Returns @GlobalScope.OK if request is successfully created. (Does not imply that the server has responded), @GlobalScope.ERR_UNCONFIGURED if not in the tree, @GlobalScope.ERR_BUSY if still processing previous request, @GlobalScope.ERR_INVALID_PARAMETER if given string is not a valid URL format, or @GlobalScope.ERR_CANT_CONNECT if not using thread and the HTTPClient cannot connect to host.


  • void set_http_proxy ( String host, int port )

Sets the proxy server for HTTP requests.

The proxy server is unset if host is empty or port is -1.


  • void set_https_proxy ( String host, int port )

Sets the proxy server for HTTPS requests.

The proxy server is unset if host is empty or port is -1.