Вы должны использовать rxjs Subject
, чтобы выдавать значения всякий раз, когда в сервисном вызове происходит ошибка. Вы должны вызвать метод next()
.
@Injectable({
providedIn: 'root'
})
export class Service{
public notify$ = new Subject<any>();
doSomething(): Observable<any> {
return this.http.get<AA>(URL, options).pipe(
connectToThirdPArtyService();
}),
this.notify$.next(true);
);
}
В вашем компоненте вы должны слушать notify $ subject следующим образом, используя метод subscribe
, всякий раз, когда значение выдается с использованием метода next
, вызывается метод подписки в вашем компоненте сделать что-то внутри notify$
подписки
export class notification implements OnInit {
constructor(public service:Service) { }
ngOnInit() {
this.service.notify$.subscribe(messages => { DoSomethig(); });
}
}
Рассмотрите возможность использования платформы ASIHTTPRequest
Бена Копси для генерации и отправки синхронных и асинхронных HTTTP-запросов ( POST и GET):
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:@"http://someSite.com"] autorelease];
[request setPostValue:@"myValue1" forKey:@"myFormField1"];
[request setPostValue:@"myValue2" forKey:@"myFormField2"];
// etc.
[request start];
NSError *error = [request error];
if (!error)
NSString *response = [request responseString];
Его каркас очень экономит время.
Я не знаю, решает ли это вашу проблему, но
[parameterString length]
часто не равны на длину
[parameterString dataUsingEncoding:NSUTF8StringEncoding]
, потому что UTF8 кодирует символы с различным количеством байтов.