0

我正在 iOS 上创建一个登录方法,通过 url 向 PHP 页面发送 GET 请求,当我尝试从网站读取输出时,在 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;
}
4

1 回答 1

0

我会尝试像这样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以便您的数据就在那里。祝你好运。

于 2013-06-20T03:52:56.467 回答