Class: XMLHttpRequest

@nginstack/engine/lib/net/XMLHttpRequest~ XMLHttpRequest


new XMLHttpRequest( [options])

Classe nativa que permite a comunicação entre duas aplicações por meio do protocolo HTTP. É implementado a mesma API presente nos browsers. Entretanto, não há suporte para conexões assíncronas, nem para objetos DOM(XML).

Parameters:
Name Type Argument Description
options XHRConfig <optional>

Opções da requisição a ser realizada. Para mais detalhes das opções disponíveis, veja module:@nginstack/engine/lib/net/XMLHttpRequest.

Examples
// Exemplo do consumo de uma API HTTP
const data = JSON.stringify({
  test: 'echo'
});
const authToken = 'secret-token';
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://postman-echo.com/post');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer ' + authToken);
xhr.send(data);
JSON.parse(xhr.responseText).data.test; // => echo
// Exemplo de uma requisição SOAP para o serviço de consulta de retorno de processamento do MDFe
const XMLHttpRequest = require('@nginstack/engine/lib/net/XMLHttpRequest');

const xml = buildXml();

const xhr = new XMLHttpRequest({
  pfxPath: File.pathAppend('certificates', 'company.pfx'),
  passphrase: 'secret_passphrase'
});
xhr.open('POST', 'https://mdfe-homologacao.svrs.rs.gov.br/ws/mdferetrecepcao/MDFeRetRecepcao.asmx');
xhr.setRequestHeader('Content-Type', 'application/soap+xml');
xhr.setRequestHeader('SOAPAction', 'urn:MDFeRetRecepcao');
xhr.send(xml);
xhr.responseText; // => xml com resultado do processamento

Members


<static> DONE :number

readyState DONE. Recebido toda a resposta.

Type:
  • number

<static> HEADERS_RECEIVED :number

readyState HEADERS_RECEIVED. Os headers foram retornados.

Type:
  • number

<static> LOADING :number

readyState LOADING. Recebendo o conteúdo da requisição.

Type:
  • number

<static> OPENED :number

readyState OPENED.

Type:
  • number

<static> UNSENT :number

readyState UNSENT. O objeto foi construído.

Type:
  • number

readyState :number

Indica o estado da conexão.

Type:
  • number

response :string|ArrayBuffer|Record.<*, *>

Obtém o conteúdo do corpo da resposta da requisição. Equivale a responseText quando a propriedade responseType for 'text' ou não estiver definida.

Type:
See:

responseText :string

Obtém o conteúdo da resposta da requisição HTTP. Equivale a response quando a propriedade responseType for 'text' ou não estiver definida.

Caso o charset não esteja definido no cabeçalho content-type da resposta, o conteúdo da resposta será codificado para UTF-8 apenas se o tipo for considerado textual. Este comportamento difere da especificação oficial, que sempre converte para UTF-8 em caso de charset nulo.

Caso o tipo de mídia seja XML, o cabeçalho da resposta não possua charset e a propriedade responseType não esteja definida, o conteúdo será codificado de acordo com o encoding declarado no XML.

Type:
  • string

responseType :string

Define o tipo de dado a ser usado na propriedade response. Os possíveis valores são 'json', 'text' e 'arraybuffer'. No tipo 'json', a propriedade response equivale a invocação do método JSON.parse tendo como parâmetro o corpo da resposta da requisição. No tipo 'arraybuffer' a propriedade response retorna um ArrayBuffer contendo o conteúdo exato do corpo da requisição. Já para o tipo 'text', ou quando nenhum valor é definido, será retornado uma string na propriedade response.

Type:
  • string
See:

status :number

Informa o código retornado pelo servidor HTTP.

Type:
  • number

statusText :string

Informa a descrição do status retornado pelo servidor HTTP.

Type:
  • string

timeout :number

Tempo máximo de espera pelo término de uma requisição em milissegundos. O padrão é 30000 ms.

Type:
  • number

Methods


getAllResponseHeaders()

Obtém todos os cabeçalhos do retorno.

Observação: quando o servidor codifica a resposta usando deflate, gzip ou brotli, o conteúdo é decodificado automaticamente e os cabeçalhos content-encoding e content-length ficam indisponíveis. Este comportamento difere da especificação oficial.

Returns:

Todos os cabeçalhos da resposta da requisição, no formato nome: valor, separados por CRLF, com os nomes dos campos de cabeçalho normalizados em caixa baixa.

Type
string

getResponseHeader(header)

Obtém o conteúdo de um cabeçalho da resposta do servidor HTTP.

Observação: quando o servidor codifica a resposta usando deflate, gzip ou brotli, o conteúdo é decodificado automaticamente e os cabeçalhos content-encoding e content-length ficam indisponíveis. Este comportamento difere da especificação oficial.

Parameters:
Name Type Description
header string

O nome do cabeçalho

Returns:

O valor do cabeçalho

Type
string

open(method, url [, async] [, username] [, password])

Prepara o objeto para a realização de uma conexão. Em conexões seguras, se o certificado não for válido ocorrerá um erro. Para ignorar a validade do certificado, é necessário definir a variável de ambiente do sistema operacional NGIN_TLS_REJECT_UNAUTHORIZED com o valor 0, ou informar o atributo ignoreSslErrors no construtor do objeto

Parameters:
Name Type Argument Description
method string

Método Http a ser utilizado.

url string

Url a ser utilizada.

async boolean <optional>

Parâmetro opcional para indicar que a requisição deve ser assíncrona. Este parâmetro não aceita o valor verdadeiro como válido e existe apenas para adequar-se à especificação do XMLHttpRequest. Por uma limitação do sistema, apenas requisições síncronas são aceitas.

username string <optional>

Nome de usuário. Parâmetro opcional usado na autenticação básica.

password string <optional>

Senha do usuário. Parâmetro opcional usado na autenticação básica.


overrideMimeType(mimeType)

Especifica um MIME type para ser usado no lugar do fornecido pelo servidor ao interpretar os dados da resposta. Deve ser usado antes de send().

Parameters:
Name Type Description
mimeType string

O MIME type a ser utilizado. Caso não seja um MIME type válido, application/octet-stream será usado no lugar.

Example
const xhr = new XMLHttpRequest();
xhr.open('GET', 'http://my/url');
xhr.overrideMimeType('text/plain; charset=utf-8');
xhr.send();

send( [body])

Inicia a requisição utilizando o argumento body como corpo da requisição.

Importante: por motivos de compatibilidade, o servidor HTTP do Engine considera que o corpo das requisições contendo dados textuais é codificado em "windows-1252" caso não haja um charset explicitamente definido no cabeçalho "content-type", exceto quando o conteúdo recebido é do tipo "application/json". Nesse caso, o Engine trata por padrão como "UTF-8". Por esse motivo, ao usar a classe XMLHttpRequest para enviar dados textuais que não sejam JSON para um servidor Engine, defina explicitamente o charset UTF-8 conforme exemplos a seguir.

Parameters:
Name Type Argument Description
body string | ArrayBuffer <optional>

Conteúdo a ser enviado no corpo da requisição. Quando informado um valor textual, ele sempre será enviado na codificação UTF-8. Caso o cabeçalho "content-type" defina um charset diferente de "UTF-8", ele será ignorado e sobrescrito com o valor "UTF-8", conforme especificação WHATWG.

Examples
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://' + engine.localAddress + ':' + engine.localPort);
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(data);
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://' + engine.localAddress + ':' + engine.localPort);
xhr.setRequestHeader('content-type', 'application/xml; charset=UTF-8');
xhr.send(data);

setRequestHeader(header, value)

Define um campo do cabeçalho da requisição Http a ser enviada.

Parameters:
Name Type Description
header string

Nome do campo.

value string

Conteúdo do campo.