NSURLConnection身份验证问题

时间:2014-03-27 17:02:07

标签: ios cocoa nsurlconnection

我有一些用于从网页发送/接收数据的代码,这些代码在90%的时间内都有效。然而,大约10%的时间它并没有让我感到困扰,我无法理解发生了什么,因为代码没有变化,我有类似的android实现这完美无瑕。这就是我所拥有的。

- (NSString*) postData:(NSString*) url params:(NSString*) params
{
    NSURL* urlRequest = [NSURL URLWithString:url];

    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[urlRequest standardizedURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0f];

    [request setHTTPMethod:@"POST"];

    [request setValue:@"application/x-www-form-urlencoded;charset=utf-8" forHTTPHeaderField:@"Content-Type"];

    [request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

    NSError* err = nil;

    NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err];

    if (!err) {
        return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];;
    }

    return nil;
}

- (NSString*) getData:(NSString*) url
{
    NSURL* urlRequest = [NSURL URLWithString:url];

    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[urlRequest standardizedURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    NSError* err = nil;

    NSData* responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err];

    if (!err) {
        return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];;
    }

    return nil;

}

我调用getData来建立与网站的初始连接。它解析了一些信息(当我发送postData时要发送两个安全令牌),然后通过POST请求发送数据。第一部分总是每次都有效。然而,我再次发送另一个POST请求来更改页面(在解析出任何新的安全令牌之后),这是〜10%的时间失败的部分。失败,我的意思是网站回应我的会话已被泄露。我知道如果安全令牌无效,就会发生此消息,但我已经检查了一遍又一遍,并且每次他们都很好。我的理论是我丢失了cookie信息,但根据我的理解,NSURLConnection应该存储基于域的cookie信息。
如果我打开浏览器并转到该页面,然后删除存储的唯一cookie,它会将我带回登录页面(如预期的那样)并且不会向我提供有关我的会话被损坏的错误消息。 任何想法将不胜感激

0 个答案:

没有答案