Ошибка Http при разборе http ... при загрузке pdf файла - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в angular, и я изо всех сил пытался понять, как загрузить файл, в моем случае файл PDF.Это ошибка, которую я получаю:

Http failure during parsing for https://url...

В консоли отладки браузера также есть ошибка:

SyntaxError: Unexpected token % in JSON at position 0 at JSON.parse

На самом деле я загружаю файл PDF.Вот как выглядит мой http-вызов:

  protected get<T>(url: string, params: any, defaultResult: T): Observable<T> {
    return this.httpClient.get<T>(url, {
    headers: myHeader,
    params: params
})
  .pipe(catchError(this.handleError(defaultResult))
  );

} Как

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

работает на меня, спасибо Для компонента, пожалуйста, проверьте ниже

downloadFile(caseID) {
    console.log(caseID);
    this.mediaService.downloadFile(caseID).subscribe(
        (downloaded) => {
        console.log('File is Downloaded', downloaded);
        var url = window.URL.createObjectURL(downloaded);
        window.open(url);
    });
}
0 голосов
/ 03 мая 2018

Поскольку вы передаете обратно блок данных, а не JSON, но не позволяете httpclient знать, как его анализировать, angular пытается проанализировать ответ как JSON, который является путем по умолчанию.

Вот документация с англоязычного сайта:

request(first: string | HttpRequest<any>, url?: string, options: {
    body?: any;
    headers?: HttpHeaders | {
        [header: string]: string | string[];
    };
    observe?: HttpObserve;
    params?: HttpParams | {
        [param: string]: string | string[];
    };
    reportProgress?: boolean;
    responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
    withCredentials?: boolean;
} = {}): Observable<any>

responseType:

В дополнение к настройке параметров запроса, таких как исходящие заголовки и / или тело, хэш опций задает два ключевых элемента информации о запросе: responseType и что наблюдать. Значение responseType определяет, как будет проанализировано успешное тело ответа. Если responseType является json по умолчанию, интерфейс типа для результирующего объекта может быть передан в качестве параметра типа в request ().

Так что в вашем случае попробуйте:

    protected get<T>(url: string, params: any, defaultResult: T): Observable<any> {
        return this.httpClient.get(url, {
        headers: myHeader,
        params: params,
        responseType: 'blob'
    })
      .pipe(catchError(this.handleError(defaultResult))
      );

больше информации:

HttpClient

Документация

Аналогичный вопрос Угловой HttpClient "Http-сбой при разборе"

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