У нас есть приложение, для которого требуется вызов webservice для отдыха (для экрана входа в систему). Призывая этот WebService, мы можем получить результат от времени, но много раз, мы получаем нулевые данные со следующим сообщением:iOS Rest Webservice Возврат недопустимой ошибки хоста
<HTML><HEAD><TITLE>Invalid Host Specified</TITLE></HEAD>
<BODY>The request did not specify a valid virtual host.</BODY></HTML>
После того как мы получаем эту ошибку, мы не можем получить какие-либо другое результат, и приложение застряло на экране входа в систему. Мы должны закрыть приложение и открыть его и повторить попытку, чтобы увидеть, работает ли веб-сервис.
Что может быть причиной этой ошибки? Мы попробовали как NSURLConnection
, так и NSURLSession
, чтобы получить результат, но оба имеют ту же проблему. Было бы очень полезно, если кто-то даст решение для этого или, по крайней мере, укажет мне в правильном направлении при решении проблемы.
Это функция, которую я использую для вызова веб-службы:
-(void)startWebServiceForURL:(NSString *)URL withInputJson:(NSString *)inputJson forView:(UIView *)parentView completionBlock:(DownloadCompletionBlock)completionBlock errorHandlingBlock:(DownloadErrorBlock)ErrorBlock
{
if (_showIndicator)
{
UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject];
UIViewController *viewC = [window rootViewController];
_progressIndicator = [MBProgressHUD showHUDAddedTo:viewC.view animated:YES];
}
_completion = completionBlock;
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:[NSString stringWithFormat:@"%lu",(unsigned long)[inputJson length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[inputJson dataUsingEncoding:NSUTF8StringEncoding]];
[request setTimeoutInterval:60.0f];
NSURLSession * session = [NSURLSession sharedSession];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
dispatch_async(dispatch_get_main_queue(),
^{
if (_showIndicator)
{
[_progressIndicator hideAnimated:YES];
}
if (!error && data != nil)
{
NSLog(@"result received!!!");
NSError * error1;
{
NSLog(@"print something else");
NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"new string: %@", newStr);
NSDictionary * jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error1];
NSLog(@"received data: %@", jsonDictionary);
if (!error1)
_completion(YES,jsonDictionary);
else
{
_error = ErrorBlock;
_error(error1);
}
}
}
else
{
NSLog(@"error receiving result");
_error = ErrorBlock;
_error(error);
if (error.domain == NSURLErrorDomain && error.code == NSURLErrorNotConnectedToInternet)
{
NSLog(@"not connected");
}
}
});
}] resume];
}
Возможно, вам потребуется опубликовать код, чтобы люди могли видеть, что вы пытаетесь сделать. Я сомневаюсь, что ваше описание даст кому-то достаточно, чтобы идти дальше – Flexicoder
Что вы уверены, эта ошибка связана с NSURLConnection или NSURLSession? Подсказка: как насчет веб-службы? – CouchDeveloper
@CouchDeveloper - только что проверил NSURLConnection, потому что я часто использовал его до iOS 8. –