1

我刚刚开始 iOS 编程,但无法理解这一点。我正在尝试连接到一个有登录名的网站。我正在使用NSURLConnection和 POST,并发送我的登录凭据。

凭据是正确的并且connectionDidFinishLoading:被调用但它没有完全登录到站点..登录部分完成..我在查看响应时发现了这一点..根据我的理解,“connectionDidFinishLoading”仅在之后调用连接完成..我肯定在这里遗漏了一些东西..我的代码在下面..请指教..

- (IBAction)connect:(id)sender {
    // Login to the website
    urlRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.mywebsite.com/login"]
                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                   timeoutInterval:60.0];

    NSString *post = @"username=myname&password=mypassword";
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [urlRequest setHTTPBody:postData];

    // Start the connection request
    urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
}

在这里,当我记录响应时,它是不完整的..它登陆在最终成功页面之间的页面..所以身份验证部分完成..我需要包括任何延迟吗?请帮忙..

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"Connection success.");
    NSURLResponse *responseTest;
    NSError *error;

    NSData *responseDataTest = [NSURLConnection sendSynchronousRequest:urlRequest       returningResponse:&responseTest error:&error];

    NSString *responsestring = [[NSString alloc] initWithData:responseDataTest encoding:NSASCIIStringEncoding];
    NSLog(@"Recieved response.. %@",responsestring);
}

提前致谢..

4

1 回答 1

0
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

请尝试改用此方法。根据文档,它是“当连接接收到足够的数据来构造其请求的 URL 响应时发送。(必需)”

于 2012-08-14T00:29:34.963 回答