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 propriedaderesponseType
for 'text' ou não estiver definida.Type:
- string | ArrayBuffer | Record.<*, *>
- See:
-
responseText :string
-
Obtém o conteúdo da resposta da requisição HTTP. Equivale a
response
quando a propriedaderesponseType
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
econtent-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 porCRLF
, 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
econtent-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.