我正在使用 NSURLConnection 与服务器连接,使用 GET 请求。要登录,我正在发送带有表单 url 的 GET 请求
http://<myUserName>:<myPassword>@my.serverurl.com/user/login
一个示例 URL 将是
http://someusername:somepass@www.google.com/user/login
当我第一次登录时,我传递了正确的用户名和密码,我能够成功登录,如果我传递了错误的用户名或密码,我会收到服务器的响应,说我的用户名和密码不正确.. 一切都很好然后
但是当我使用正确的用户名/密码登录时,进入我的主页。在那里我注销返回登录屏幕。现在我输入了错误的用户名和密码并尝试登录,我得到响应登录成功..这是我的问题。
这意味着我所有后续的登录请求都以错误的用户名和密码成功返回。我用浏览器检查了相同的 url(正确和不正确),一切正常。
这是我用来登录的代码
-(void)postRequest{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:
@"http://myusername:mypass@my.serverurl.com/user/login"]];
[request setHTTPMethod:@"GET"];
// [request setHTTPShouldHandleCookies:NO]; ==> I tried without this first
loginRequestConnection = [[CustomURLConnection alloc]
initCustomURLWithRequest:request
delegate:self
withTAG:LOGIN_REQUEST_CONNECTION];
[request release];
}
现在 CustomURLConnection 只不过是 NSURLConnection 的一个子类,并添加了一个标签来识别委托中的多个连接请求
@interface CustomURLConnection : NSURLConnection{
}
@property()NSInteger tag;
@property(nonatomic, retain) NSMutableData *receivedData;
-(id)initCustomURLWithRequest:(NSURLRequest *)request delegate:(id)delegate withTAG:(NSInteger)tagInt;
@end
我认为问题是 NSURLConnection 请求将 cookie 存储在某处并将它们重用于后续请求。这就是我添加的原因
[request setHTTPShouldHandleCookies:NO];
到代码。但不管有没有这个问题都存在。那么对于导致此问题的原因还有其他建议吗?