2012-12-05 7 views
1

NSURLConnection을 사용하여 사용자 이름과 암호로 연결하고 로그인하려고합니다. 게시물 요청을 할 수 있으며 응답을받을 수도 있지만 세션을 유지 관리 할 수는 없습니다. 요청을하면 웹 사이트에서 다음 메시지가 나타납니다.NSURLConnection에서 세션을 유지할 수 없습니다.

이 시스템에서는 인증 정보를 확인하기 위해 HTTP 쿠키를 사용해야합니다. Google 시스템에서 브라우저가 HTTP 쿠키를 사용하지 않도록 설정했거나 지원하지 않는 것으로 확인되었습니다. 이 시스템에서 사용할 수 있도록 브라우저를 올바르게 구성하는 방법에 대한 자세한 내용은 브라우저의 도움말 페이지를 참조하십시오.

연결을 사용하려면 코드는 여기에 있습니다 : 누군가가 나를 도울 수 있다면

NSMutableURLRequest *request = nil; 
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://loginsite.com"]]; 
[[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

NSString *post = [NSString stringWithFormat:@"username=username&pass=password"]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
[request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setTimeoutInterval: 15]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:postData]; 

_urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
[_urlConnection start]; 

나는 기쁠 것이다.

답변

0

전송 한 사용자 에이전트 헤더를 확인한 것 같습니다. 이는이 경우에 포함되지 않은 ....

1) 호환 헤더를 추가

NSString *myAgent = @"SOME AGENT StRING"; 
    [request setValue:myAgent forHTTPHeaderField:@"User-Agent"]; 

예컨대 AFNetworking

에서 에이전트 문자열
#if __IPHONE_OS_VERSION_MIN_REQUIRED 
     // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 
     [self setDefaultHeader:@"User-Agent" value:[NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleIdentifierKey], (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey) ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [[UIScreen mainScreen] scale] : 1.0f)]]; 
    #elif __MAC_OS_X_VERSION_MIN_REQUIRED 
     [self setDefaultHeader:@"User-Agent" value:[NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]]; 
    #endif 

2) 응답 쿠키를 타고 주요 세션으로 향후 요청에서 사용할

nextR.requestCookies = rLogin.responseCookies.mutableCopy; 
관련 문제