2012-04-13 93 views
2

我正在使用NSURLConnection与服务器连接,使用GET请求。登录我发送一个GET请求与形式的URLNSURLConnection,用错误凭据登录成功

http://<myUserName>:<myPassword>@my.serverurl.com/user/login 

一个例子URL将

http://someusername:[email protected]/user/login 

当我登录的第一次,我传递正确的用户名和密码,我我能够成功登录,如果我通过不正确的用户名或密码,我收到服务器的回应,说我的用户名和密码不正确..一切都很好然后

但是,当我用正确的用户名/密码登录,进入我的主页。在那里我注销以返回到登录屏幕。现在我输入不正确的用户名和密码,并尝试登录,我得到的回应登录成功..这是我的问题。

这意味着我所有的后续登录请求返回成功与不正确的用户名和密码。我使用浏览器检查了相同的URL(正确和不正确),并且所有内容都按照原样运行。

这是代码我使用登录

-(void)postRequest{ 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; 
    [request setURL:[NSURL URLWithString: 
       @"http://myusername:[email protected]/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]; 

的代码。但有或没有这个问题仍然存在。那么对于什么导致这个问题的其他建议?

回答

3

尝试使用此 initWithURL:cachePolicy:timeoutInterval:并设置cache policyNSURLRequestReloadIgnoringCacheData

尝试添加该委托方法。

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse { 
return nil; 
} 

确保调用此方法。

使用NSURLCredentialStorageremoveCredential可清除缓存中存储的凭据NSURLConnection

Please check this answer as well.

希望的作品

+0

试图that..But仍然没有luck..I我仍然能够与不正确的用户名登录/密码.. – Krishnabhadra 2012-04-13 05:39:13

+0

一旦重置模拟器,或者如果您在设备工作,删除你的应用程序一次,也从内存中删除cookies,然后再试一次。 – DivineDesert 2012-04-13 05:40:41

+0

在模拟器和设备上都尝试过。模拟器重新启动,从设备中删除应用程序,在注销时清除cookie并重试..没有运气..当您发布上述评论时,想到相同的步骤.. – Krishnabhadra 2012-04-13 05:44:32