나는이 문제를 며칠 동안 보아왔다. 내 응용 프로그램은 ASP.NET (버전 : 4.0.30319, MVC 버전 : 3.0) 서버에 로그인 한 다음 NSMutableURLRequest를 통해 제한된 페이지 (액세스하려면 로그인해야하는 페이지)에 게시해야합니다.올바르게 NSMutableURLRequest와 함께 .ASPXAUTH 및 ASP.NET_SessionId 쿠키를 포함하는 방법
현재 웹 사이트에 로그인 할 수 있습니다. 이 코드를 사용하여 로그인하려면
NSString *post =[[NSString alloc] initWithFormat:@"LogInEmail=%@&Password=%@",@"[email protected]",@"password"];
NSURL *url=[NSURL URLWithString:@"http://www.website.com/LogIn"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseMeta = nil;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseMeta error:&error];
내가 확인 ASP.NET_SessionId의 및 .ASPXAUTH 쿠키 모두, 해당 웹 사이트를 들어, sharedHTTPCookieStorage에서 찾을 수 있습니다 볼 수 있습니다. 본인은 "로그인"하고 싶을 때이 두 가지 요청을 함께 보내야 함을 이해합니다.
쿠키를 확인하는 코드는 여기에 있습니다 :
NSArray *cookiesForURL = [cookieJar cookiesForURL: [NSURL URLWithString: @"http://www.example.com"]];
for (cookie in cookiesForURL)
{
if([cookie.name compare:@"ASP.NET_SessionId"] == NSOrderedSame)
{
ASPdotNET_SessionId = [cookie value];
NSLog(@"ASP.NET_SessionId: %@" , ASPdotNET_SessionId);
}
if([cookie.name compare:@".ASPXAUTH"] == NSOrderedSame)
{
dotASPXAUTH = [cookie value];
NSLog(@".ASPXAUTH: %@" , dotASPXAUTH);
}
}
는 쿠키 이것을 사용 지우려면 :
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *each in [[cookieStorage cookiesForURL:[NSURL URLWithString:@"http://www.example.com"]] copy]) {
[cookieStorage deleteCookie:each];
}
내가 NSString *post
및 NSUrl *url
수정 및이를 사용하여 제한된 페이지에 게시 시도 위의 코드.
NSString *post =[[NSString alloc] initWithFormat:[MessageId stringByAppendingString:@"=%@"],Comment];
NSURL *url=[NSURL URLWithString:@"https://www.website.com/message
이것은 성공하지 못했습니다. 나는 어떤 식 으로든 쿠키를 소홀히했기 때문에 추측합니다. 난 그냥 [request setHTTPMethod:@"POST"];
에서이 코드에 추가하는 시도 :
[request addValue:ASPdotNET_SessionId forHTTPHeaderField:@"Cookie"];
및/또는 : ASPdotNET_SessionId
및 dotASPXAUTH
가 sharedHTTPCookieStorage에서 검색 쿠키 값입니다
[request addValue:dotASPXAUTH forHTTPHeaderField:@"Cookie"];
.
나는 이것이 정말 간단하다고 느낍니다. 어떤 도움이 필요합니까?