[objective-c]读取数据后,完全做网页加载

标签: ios Objective-C HTTP
发布时间: 2016/10/2 5:30:07
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在做一种登录方法 iOS 上发送一个 GET 请求到一个 PHP 页通过 url,当我尝试从网站读取输出,读取的数据是在 PHP 可以完成 mysql 查询之前,我在想,如果有任何方法等待,直到该网页是完全完成加载要从中读取数据的代码:

-(NSString *)getWebpageData:(NSString *)url {
    NSURL *URL = [NSURL URLWithString:url];
    NSError *error = nil;
    NSString *content = [NSString stringWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:&error];
    return content;
}

解决方法 1:

我会尝试使用 NSURLConnection 通过 sendAsynchronousRequest 像这样...

NSOperationQueue *myQueue = [[NSOperationQueue alloc]init];
    [NSURLConnection sendAsynchronousRequest:request queue:myQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        //do something
    }];

主要是,不言而喻的是触发处理程序块时,你有你的内容。

另一种选择将调用 NSURLConnectionDataDelegate 。当您调用您的 URL 时它会火几种方法让你知道当事情都做。

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    //Fired on error
}

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
{
    //Fired First
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    //Fired Second
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //Fired Third
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    //Fired Fourth
}

委托方法,因此,你可能会想要利用 didReceiveData ,你就在那里有你的数据。祝你好运。

赞助商