Невозможно устранить ошибку хоста в простом запросе get - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть проект NativeScript Angular, который иногда выдает эту ошибку при простом запросе GET.

Ошибка

ERROR {
 "headers": {
 "normalizedNames": {},
 "lazyUpdate": null,
 "headers": {}
},
"status": 0,
"statusText": "Unknown Error",
"url": "https://api.domain.com/get_url",
"ok": false,
"name": "HttpErrorResponse",
"message": "Http failure response for https://api.domain.com/get_url: 0 Unknown Error",
"error": {
   "originalStack": "Error: java.net.UnknownHostException: Unable to resolve host \"api.domain.com\": No address associated with hostname\n    at new ZoneAwareError (file:///data/data/org.nativescript.tnsfaculty/files/app/vendor.js:91745:33)\n    at onRequestComplete (file:///data/data/org.nativescript.tnsfaculty/files/app/vendor.js:98017:34)\n    at Object.onComplete (file:///data/data/org.nativescript.tnsfaculty/files/app/vendor.js:98006:13)"
  }
}

Проблема заключается в том, что это ошибка не является последовательной и устраняется простым refre sh. Я понятия не имею, почему и когда это происходит. Есть ли способ диагностировать эту проблему и решить ее.

Добавление службы API моего проекта для контекста.

api.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from "@angular/common/http";

@Injectable({
  providedIn: 'root'
})

export class ApiService {
  apiUrl = "https://api.domain.com";

  constructor(private http: HttpClient) { }

  private setHeaders(path) {
    if (!this.headersException(path)){
     const token = getString('auth_token');
     console.log('Setting Headers');
     if (token !== null){
       let headers = new HttpHeaders({
        "Authorization": token,
        "Accept": "application/json",
        "Content-Type": "application/json",
       });
       return headers;
      }
    }
  }

  public headersException(path){
    if (path === 'login' || path === 'signup'){
     return true;
    } else {
     return false;
    }
  }

  public get(path){
   const url = this.apiUrl + '/' + path;
   return this.http.get(url, { headers: this.setHeaders(path) });
  }
}
...