アップデート最初の要求を再試行新しいチケットを取得:その後、新しいthis.TICKET
とミリアンペア要求deleteDocument()
を再試行getTicket()
、私deleteDocument()
が、私はエラーを処理したいとき、私は、HTTPのクラスを拡張
:その後、
@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())
}
}
は後に私の新しいを受け取りますチケット、私は新しいURLで私の最初のリクエストをやり直したい。どんな簡単な方法があるかどうおかげ
あなたはどこ実際の要求にコードを追加していただけますか?あなたの再試行メソッドはクエリメソッドへの新しい呼び出しになるので、その署名を知る必要があります。 – Supamiu
ご迷惑をおかけいたしますが、ここにいるのです(アップデートをご覧ください) – istiti