neues Ticket holen und erste Anfrage wiederholen

Aktualisieren

Ich erweitere die HTTP-Klasse, wenn ichdeleteDocument() Ich möchte Fehler behandeln, danngetTicket() dann versuche es erneut mit einer AnfragedeleteDocument() mit neuemthis.TICKET :

@Injectable()
export class HttpService extends Http {
    public SERVER_URL: string = 'http://10.0.0.183:8080/alfresco/s/'
    public TICKET: string = ''

    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
        super(backend, defaultOptions);
    }


    post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
        return this.intercept(super.post(url,body, options));
    }

    intercept(observable: Observable<Response>): Observable<Response> {
        return observable.catch(initialError => {
            if (initialError.status === 401) {
                return this.getTicket()
                    .do(res => {
                        // HERE I WANT RETRY MY FIRST REQUEST
                        this.TICKET = res.json().data.ticket
                    })
            } else {
                return Observable.throw(initialError);
            }
        })
    }

    getTicket() {
        return this.post(this.SERVER_URL + 'api/login', JSON.stringify({username: 'admin', password: 'admin'}))
    }


    deleteDocument(idFile: number) {
        return this.post(this.SERVER_URL + 'dms/file/delfile?idfile=' + idFile + '&alf_ticket=' + this.TICKET, {}).map((data: Response) => data.json())
    }
}

Nachdem ich mein neues Ticket erhalten habe, möchte ich meine erste Anfrage mit einer neuen URL wiederholen. Vielen Dan

Antworten auf die Frage(2)

Ihre Antwort auf die Frage