ошибка httpclient не работает в android браузер работает в chrome - PullRequest
1 голос
/ 05 февраля 2020

скриншот с ошибкой

post, get, et c. методы http работают в браузере рабочего стола, но не в браузере android, в chrome для мобильных устройств он работает нормально

import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { retry, catchError, map } from 'rxjs/operators';
import { Observable, throwError, concat, of, BehaviorSubject, Subject, EMPTY } from 'rxjs';

export class HttpService {
  private REST_API_SERVER: string = `${environment.baseUrl}`;

  constructor(private http: HttpClient) {}

  httpOptions = new HttpHeaders({
    'Content-Type': 'application/json'
  });

  private _modalOpen: BehaviorSubject<any> = new BehaviorSubject<any>(null);

  private modalOpenObservable = new Subject<any>();
  modalErrorOpen$ = this.modalOpenObservable.asObservable();

  handleError(error: HttpErrorResponse) {
    let errorMessage = 'Unknown error!';
    if (error.error instanceof ErrorEvent) {
      // Client-side errors
      errorMessage = `Error: ${error.error.message}`;
    } else {
      // Server-side errors
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;

      if ((error.status >= 400 && error.status <= 600) || error.status == 0) {
        errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
      }
    }

    console.warn(errorMessage);

    const result = concat(of(error.status), throwError(new Error('oops!')));
    result.subscribe(x => console.log(x), e => console.log(e));

    return result;
  }

  validateToken() {
    this.headersWhithToken = new HttpHeaders({
      'Content-Type': 'application/json',
      Authorization: `${this.getToken()}`
    });
  }

    public postRequest<T>(url: string, data: any, headers: any): Observable<any> {
      if (headers === false) {
        return this.http.post<T>(this.REST_API_SERVER + url, JSON.stringify(data), { headers: this.httpOptions }).pipe(
          retry(3),
          catchError(() => {
            this.modalOpenObservable.next(true);
            return EMPTY;
          }),
          map(object => object)
        );
      } else {
        this.validateToken();
        return this.http
          .post<T>(this.REST_API_SERVER + url, JSON.stringify(data), { headers: this.headersWhithToken })
          .pipe(
            retry(3),
            catchError(() => {
              this.modalOpenObservable.next(true);
              return EMPTY;
            }),
            map(object => object)
          );
      }
    }
}

в компоненте выполняется вызов метода http, когда выполняется вызов в настольном браузере все идет хорошо, в браузере android отображается ошибка изображения ...

в компоненте:

sendValues(data) {
if (this._authService.token != '') {
  const url = `${SERVICES.RADAR.CODE}`;
  this.headers = true;
  this._http.postRequest<OffersInterface[]>(url, data, this.headers).subscribe(dataOffers => {
    this.idOffer = dataOffers.url;
    this.thankYouPage();
  });
} else {
  const url = `${SERVICES.RADAR.ANONYMOUS}`;
  this.headers = false;
  this._http.postRequest<OffersInterface[]>(url, data, this.headers).subscribe(dataOffers => {
    this.idOffer = dataOffers.url;
    this.thankYouPage();
  });
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...