- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从服务器下载文件。我的代码如下。在 didFinishLaunchingWithOptions 方法中,我使用运行以下代码的 detachNewThreadSelector 创建了一个新线程。
NSString *destPath = [self.home_dir_path stringByAppendingPathComponent:[NSString stringWithFormat:@"_%@",content_data_file_name]];
[ContentBO downloadFile:destPath content_name:content_data_file_name];
if([self updatesAvailable]){
//update content
}else{
//launch app
}
我的下载文件代码是:
@try{
NSString *url = [NSString stringWithFormat:@"%@/%@",ServerURL,content_name];
NSLog(@"downloading URL is: %@",url);
self.request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];
[self.request setRequestMethod:@"GET"];
[self.request setDownloadDestinationPath:destFilePath];
NSLog(@"destination path is: %@",destFilePath);
[self.request setTimeOutSeconds:30];
[self.request setDelegate:self];
[self.request startSynchronous];
NSError *error = [self.request error];
NSData *receivedData = nil;
if (!error) {
isSuccess = YES;
self.responseStr = [request responseString];
receivedData = [NSData dataWithData:[self.request responseData]];
}
else {
isSuccess = NO;
NSLog(@"The following error occurred: %@", error);
}
}@catch(NSException *e){
NSLog(@"exception occured.");
}
我对同步调用的理解是这是一个阻塞调用,控制不应该低于
[ContentBO downloadFile:destPath content_name:content_data_file_name];
直到控制超出 ASIHTTPRequestDelegate 的 requestFinished 方法。在我的例子中,发生的事情是控件同时执行 requestFinished 和下面的代码
[ContentBO downloadFile:destPath content_name:content_data_file_name];
但我不希望控件在从 requestFinished 方法出来之前低于 [ContentBO downloadFile...]。
最佳答案
requestFinished 委托(delegate)调用在主线程上异步运行,而您的代码不在主线程上运行,因此预计两者会同时运行。
但是,由于您使用的是同步请求,为什么不删除 requestFinished 的内容并将代码放在“startSyncronous”行之后?当 startSynchronous 返回时,您可以保证请求已完成。
关于objective-c - ASIHttp 同步请求在返回后运行委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278875/
我正在使用 ASIHTTPRequest 库从 iPhone 应用程序中的服务器请求一些数据。但我不知道如何创建超时,以便在服务器出现故障或 iPhone 没有互联网连接时应用程序不会崩溃。 提前致谢
我正在使用asihhtp请求在ios中发出多个图像上传请求以将图像提交到服务器。但是我的应用程序总是由于进度条而崩溃。这是我的代码 ASIHTTPRequest *re
我需要记录ASIHTTP中使用的请求 NSURL *url = [NSURL URLWithString:@"https:// tor.or rd.net.au/OnlineService.sv
在我的主类中,我正在创建我的 AlbumFetcher 类的对象,并调用一些函数并释放该对象。 AlbumFetcher *_albumFetcher = [[AlbumFetcher alloc]
我发现这两个url不会同时返回数据。我想知道如何确保网址同时返回。我怎样才能将这段代码更改为GCD。是推荐的吗?我在代码中创建了调度队列,但它没有绘制任何内容,不起作用。没有 GCD,它可以工作,但不
我正在通过 ASIHTTP 请求下载音频文件。当我并行下载三个或更少数量的文件时,它工作正常,但是当我尝试并行下载更多的第四个文件时,它在项目中的所有 tableViews 上显示事件指示器并且不显示
谁能告诉我如何在 Objective-c 中使用 ASIHTTPRequest 对象来上传 UIImage 对象?我需要将它转换为 NSData 对象吗? (这是头像上传地址) E.g. UIImag
您好,我在我的应用程序中使用 Asihttp 请求类,我知道它已被弃用,需要切换到 afnetworking 或新的东西,但这是一个仍在继续的旧项目,它在 ios8 上运行良好,但不适用于 ios9。
我目前正在测试如何结合ios、php、mysql和xml。到目前为止,我已经建立了一个数据库,让我的 php 脚本正常工作,并使用它们从我的外部 mysql 数据库请求数据,然后使用 ASIHTTPR
我计划从 ASIHTTP 调用 php jason 脚本。我计划将 Google Analytics 代码放入脚本中,以便我可以跟踪它在 Google Analytics 中的使用情况。 我想知道,如
我在我的 iOS 应用程序中使用 ASIHTTPRequest。每个 POST 请求都需要存在有效的身份验证 token 。我通过在应用程序的开头发出身份验证/请求来从服务器获取身份验证 token
我目前有一个 View Controller ,它实现了 ASIHTTP 来处理 API 调用。 我的 View Controller 触发了 2 个单独的调用。我需要能够区分 -requestFin
我最近在 http://allseeing-i.com 上阅读新闻ASIHTTP 已停产。我非常尊重图书馆的创造者。但是,我现在正在寻找一种替代品,它也支持 iOS 上的排队下载(多线程),它还支持带
我正在使用 ASIHTTP 将 View Controller 作为委托(delegate)运行 http 请求,如果用户在请求完成之前离开 View Controller ,我会在执行 if ( d
我在 ASIHTTPRequest 身份验证方面遇到问题。步骤按以下顺序排列, 用户输入错误的用户名和密码 --> 后端没有数据,并且从 ASIHTTPRequest 调用请求失败的委托(delega
我有一个方法,可以调用它来使用 GET 发出 Web 服务请求。它看起来像这样: - (UIImage*)getImageWithSeriesGUID:(NSString*)seriesGUID Im
我希望将 1mb 到 50mb 范围内的 xml 文件上传到 php 服务器。据我所知,ASIHTTP 是当时使用的代码,但我正在寻找一个更新的框架来使用。ASIHTTP 网站推荐了 AFNetwor
我正在尝试从服务器下载文件。我的代码如下。在 didFinishLaunchingWithOptions 方法中,我使用运行以下代码的 detachNewThreadSelector 创建了一个新线程
我正在使用 ASIHTTP (http://allseeing-i.com/ASIHTTPRequest/)处理通信 标准网络通信没问题,但是当我想下载文件时,目标是 HTTP/1.1 405 Met
我已经从 iOS 向服务器发布了一个文件(使用 PHP),我希望 PHP 服务器返回一些变量给 iOS,我用 >[request responseString] 获取服务器响应, 但它总是返回我的 H
我是一名优秀的程序员,十分优秀!