我有一個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