iPhone发出POST请求,处理cookie
我希望有人能对以下几点有所了解,我想我正朝着正确的方向前进。我想使用user/pass组合登录到我的服务器,然后我需要能够判断我是否正确登录(应该删除cookie),如果是这种情况,我将发出另一个请求 感谢您的帮助,以下是我正在使用的代码:iPhone发出POST请求,处理cookie,iphone,forms,post,Iphone,Forms,Post,我希望有人能对以下几点有所了解,我想我正朝着正确的方向前进。我想使用user/pass组合登录到我的服务器,然后我需要能够判断我是否正确登录(应该删除cookie),如果是这种情况,我将发出另一个请求 感谢您的帮助,以下是我正在使用的代码: [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; NSString *post =[NSString
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
NSString *post =[NSString stringWithFormat:@"name=%@&pass=%@",@"foo", @"bar"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://www.mywebserver.com/login.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(data);
// HOW to Check if there was a Cookie dropped??
// Make another request..
这应该起作用:
NSDictionary *headerFields = [(NSHTTPURLResponse*)response allHeaderFields];
NSURL *url = [NSURL URLWithString:@"http://www.mywebserver.com/login.php"];
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headerFields forURL:url];
然后您就可以知道cookies
数组是否包含您想要的cookie
您也可以在收到响应后调用此选项:
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
以下是使用当前代码的可能解决方案: 1-您在开始时所做的是好的:通常设置cookie策略
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHttpCookieStorage];
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
2-之后,在您的请求中,您需要指定要使用cookie(以便注入会话信息):
您需要为身份验证和后续请求设置此字段。仅需快速更正,它应为:
NSHTTPCookieStorage*cookieStorage=[NSHTTPCookieStorage sharedhpcookiestorage]代码>谢谢你的信息!
[request setHTTPShouldHandleCookies:YES];