【发布时间】:2016-10-10 07:42:31
【问题描述】:
更新:
我扩展了Http类,当我deleteDocument()我想处理错误然后getTicket()然后用新的this.TICKET重试ma请求deleteDocument():
@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 重试我的第一个请求。谢谢
【问题讨论】:
-
您能否将您实际所在的代码添加到请求中?您的重试方法将是对查询方法的新调用,因此我们需要知道它的签名。
-
请道歉,在这里(见更新)
标签: angular rxjs observable