Я довольно долго пытаюсь заставить эту работу работать. Код в Objective- C, и я не знаю, как преобразовать код ниже, чтобы использовать NSURLSession. По возвращении получаю ошибку.
- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
{
if ( _staticHandler != nil) {
SBStaticHandlerResponse* mockResponse = _staticHandler(request);
if ( mockResponse != nil) {
(*response) = [[NSHTTPURLResponse alloc] initWithURL:[request URL] statusCode:200 HTTPVersion:nil headerFields:mockResponse.Headers];
return mockResponse.Data;
}
}
return [NSURLConnection sendSynchronousRequest:request returningResponse:response error:error];
// ERROR: 'sendSynchronousRequest:returningResponse:error:' is unavailable: not available on watchOS
}
На основании ссылки в комментарии я обновил код. Это правильный путь?
- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
{
NSError __block *err = NULL;
NSData __block *data;
NSURLResponse __block *resp;
[[[NSURLSession sharedSession] dataTaskWithRequest:request
completionHandler:^(NSData* _data,
NSURLResponse* _response, NSError* _error) {
resp = _response;
err = _error;
data = _data;
}] resume];
if ( _staticHandler != nil) {
SBStaticHandlerResponse* mockResponse = _staticHandler(request);
if ( mockResponse != nil) {
(*response) = [[NSHTTPURLResponse alloc] initWithURL:[request URL] statusCode:200 HTTPVersion:nil headerFields:mockResponse.Headers];
return mockResponse.Data;
}
}
return data;
//return [NSURLConnection sendSynchronousRequest:request returningResponse:response error:error];
}