У меня есть метод для http-соединения, который работал отлично для меня, пока сервер не попытался получить недействительный сертификат ssl. Поскольку я используюМетод NSURLConnection необходимо изменить, чтобы пройти проверку подлинности
[NSURLConnection sendSynchronousRequest:returningResponse:error]
Там нет никаких шансов пройти аутентификацию вызов с помощью NSURLConnection
методы делегата.
Теперь мне нужно как можно быстрее изменить код вызова службы. Мой метод возвращает данные, полученные от связи, что является основной проблемой я не могу легко изменить мину NSURLConnection
к initWithRequest:delegate:
Мой метод вызова службы заключается в следующем;
-(id)serviceCall:(NSString*)str withURL:(NSString*)serviceUrl withIdentifier:(NSString*)type
{
globalURL = [[NSURL alloc] initWithString:serviceUrl];
shouldAllowSelfSignedCert = YES;
// if(ISDEBUG) NSLog(@"%@",serviceUrl);
NSMutableDictionary* json;
NSURLResponse* response;
NSData* responseData = [NSMutableData data];
NSError* error = nil;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:globalURL];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: [str dataUsingEncoding: NSUTF8StringEncoding]];
NSString* msgLength = [[NSString alloc] initWithFormat:@"%lu", (unsigned long)[str length]];
[request addValue:@"text/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:msgLength forHTTPHeaderField:@"Content-Length"];
request.timeoutInterval = 180;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if([type isEqualToString:@"image"])
{
if(ISDEBUG) NSLog(@"%@",responseData);
return responseData;
}
else
{
if(error)
{
UIAlertView *message = [[UIAlertView alloc] initWithTitle:NO_WS_CONNECTION message:@"" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
if(ISDEBUG) NSLog(@"%@",error);
}
else
{
if(responseData !=nil)
{
json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:NO_WS_CONNECTION delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
}
}
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
if(ISDEBUG) NSLog(@"%@",responseString);
}
return json;
}
Надеюсь, я достаточно ясен.
Что посоветую?
Спасибо.
В качестве альтернативы вы можете добавить пароль к брелкам пользователя, а синхронные URL-адреса будут использоваться по умолчанию. С учетом сказанного, переход к асинхронному стилю определенно является правильным решением в долгосрочной перспективе. – dgatwood