Quero usar um método simples para verificar a conectividade da internet. Temos um arquivo hospedado em um servidor e eu simplesmente quero verificar se podemos vê-lo.
O arquivo contém:
{
"status": "success"
}
No meu componente Angular:
#http = inject(HttpClient);
isOnline: boolean;
updateOnlineStatus(url: string): void {
console.log(this.#CLASS_NAME + '.updateOnlineStatus() - url', url);
this.#http.get<any>(url).pipe(
catchError((error) => {
console.log(this.#CLASS_NAME + '.updateOnlineStatus(), error', error);
this.isOnline = false;
return of(null);
})
).subscribe(response => {
if (response && response.status === 'success') {
this.isOnline = true;
} else {
this.isOnline = false;
}
});
}
Mas quando chamo o método, recebo:
LoginPage.updateOnlineStatus() - url https://xxx/status.json
login.component.ts:288 LoginPage.updateOnlineStatus(), error TypeError: Cannot read
properties of undefined (reading 'length')
at HttpHeaders.applyUpdate (http.mjs:222:27)
at http.mjs:195:58
at Array.forEach (<anonymous>)
at HttpHeaders.init (http.mjs:195:33)
at HttpHeaders.forEach (http.mjs:263:14)
at Observable._subscribe (http.mjs:2116:29)
at Observable._trySubscribe (Observable.js:37:25)
at Observable.js:31:30
at errorContext (errorContext.js:19:9)
at Observable.subscribe (Observable.js:22:21)
E na aba de rede, posso ver que o GET não é executado, então parece que o HttpClient está falhando antes disso.
O que estou fazendo errado?
O arquivo existe e posso vê-lo usando o Postman ou até mesmo o navegador (mas a solicitação nem está sendo executada).
O código para criar a solicitação parece bom. O stack trace do erro aponta para a criação dos cabeçalhos da solicitação, no entanto, você não adicionou nenhum cabeçalho adicional a essa solicitação.
Então deve haver algo mais no seu aplicativo que mexe com a solicitação e, de alguma forma, torna os cabeçalhos inválidos. Geralmente isso acontece em interceptadores. Para encontrar os interceptadores no seu aplicativo, pesquise pelo
HTTP_INTERCEPTORS
token de injeção ou pelawithInterceptors
função.Depois de encontrar os interceptadores, você pode removê-los temporariamente, um por um, para ver qual deles causa os problemas. Finalmente, você pode consertar a lógica do interceptador.