ошибка: SyntaxError: неожиданный токен g в JSON в позиции 0 - PullRequest
0 голосов
/ 26 февраля 2020

Эта ошибка выдает меня при вводе букв, если я ввожу цифры, это не дает мне. Я хотел бы знать, как это исправить.

Angular код auth.service.ts

 refactor(data: string): Observable<any>{
        return this.http.post<any>(apiUrl, data)
          .pipe(
            tap(_ => this.log('refactor')),
            catchError(this.handleError('refactor', []))
          );
      }

component.ts

this.anomtextService.refactor($('#file').val().toString())
         .subscribe(res => {

           $('#textAnom').val(res);

         }, (err) => {
           console.log(err);
           alert(err.error);
         });

     }

API REST JAVA

@PostMapping(path = "/rename")
    public String getPathByDoc(@RequestBody String text) {

        return text;

    }

enter image description here

token.interceptor.ts

    import { Injectable } from '@angular/core';
import {
    HttpRequest,
    HttpHandler,
    HttpEvent,
    HttpInterceptor,
    HttpResponse,
    HttpErrorResponse
} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { Router } from '@angular/router';

@Injectable()
export class TokenInterceptor implements HttpInterceptor {

  constructor(private router: Router) {}
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

      const token = localStorage.getItem('token');
      if (token) {
        request = request.clone({
          setHeaders: {
            'Authorization': 'Bearer ' + token
          }
        });
      }
      if (!request.headers.has('Content-Type')) {
        request = request.clone({
          setHeaders: {
            'content-type': 'application/json'
          }
        });
      }
      request = request.clone({
        headers: request.headers.set('Accept', 'application/json')
      });
      return next.handle(request).pipe(
        map((event: HttpEvent<any>) => {
          if (event instanceof HttpResponse) {
            console.log('event--->>>', event);
          }
          return event;
        }),
        catchError((error: HttpErrorResponse) => {
          console.log(error);
          if (error.status === 401) {
            this.router.navigate(['login']);
          }
          if (error.status === 400) {
            alert(error.error);
          }
          return throwError(error);
        }));
  }
}

Может быть, ошибка там, я изматывал вещи весь день.

Буду признателен за помощь, которую вы можете мне дать.

Возможное решение, которое они мне дали: Angulars HttpClient ожидает, что ваш тип ответа будет json и пытается его проанализировать. Вместо этого вы можете указать HttpClient, что он должен принимать простой текст.

Но я не знаю, как это решить

1 Ответ

3 голосов
/ 26 февраля 2020

Angulars HttpClient ожидает, что ваш тип ответа будет json, и пытается его проанализировать. Вместо этого вы можете указать HttpClient, чтобы он принимал простой текст.

refactor(data: string): Observable<any>{
    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');

    return this.http.post(apiUrl, data,{headers,responseType: 'text'})
          .pipe(
            tap(_ => this.log('refactor')),
            catchError(this.handleError('refactor', []))
          );
}
...