Tag: nsurlconnection

如何改变NSURLConnection的优先级?

我正在开发一个音乐应用程序,它使用ASIHTTPRequest访问服务器的API,并使用NSURLConnection来下载音乐文件。 一个音乐文件是10M左右。 下载音乐文件时,访问服务器的api将比下载音乐文件慢得多。 所以我想更改下载连接的优先级。 但没有改变NSURLConnection或NSURLRequest优先级的API。 如何归档这个?

asynchronousNSURLConnection和保持活动

我正在使用NSURLConnectionasynchronous地执行一系列的HTTP请求到同一个主机,即[initWithRequest:delegate:startImmediately:]和一个委托。 当connectionDidFinishLoading通知来到委托,我释放我的连接对象,然后初始化并启动另一个,到同一主机。 问题 – 底层套接字是否会被重用? Connection:keep-alive服务器头在那里,但我没有办法确保它被尊重。 我的意思是,第一个连接在发布通知时还没有正式“完成”。 还是呢? 编辑: 数据包在Mac上嗅探 。 PacketLogger随附硬件工具。 编辑2:看起来像它不捕获iOS模拟器的活动。

MonoTouch:如何按照苹果幻灯片“build立报刊应用程序”(Session 504)中的说明逐步下载PDF?

这是一个后续: MonoTouch:如何保存一个庞大的PDF从URL递增? 我试图按照报亭演示文稿(“build设报刊应用”,Session 504)的Apple幻灯片指示的指导方针: http://adcdownload.apple.com//wwdc_2011/adc_on_itunes__wwdc11_sessions__pdf/504_building_newsstand_apps.pdf Applebuild议使用NSURLConnection Delegate和NKAssetDownload来下载和恢复报亭内容,但我不明白MonoTouch中的C#代码与幻灯片中显示的Obj-C中的相同。 问题是如何从我的MonoTouch iPhone / iPad报亭应用程序中的URL下载一个巨大的PDF文件,这个PDF通常太大而不适合内存。 要按照幻灯片中的说明逐步执行下载,而不是将所有下载的数据附加到NSData中,并在下载的最后,并在获取所有数据时将其存储到文件中,则需要单独执行下载线程并追加到一个文件,每个接收块和释放我的记忆。 同时,我需要确定的是,如果连接断开或应用程序崩溃,下载将自动从最后一个块中恢复,而不会损坏文件。 在MonoTouch中处理这个问题有什么更好的办法,而不会冒着看到苹果拒绝我的应用程序的风险? 提前致谢!

如何检查文件是否存在于特定的URL?

如何检查网站上是否存在文件? 我使用NSURLConnection与我的NSURLRequest和NSMutableData对象来存储什么回来在didReceiveData:委托方法。 在connectionDidFinishingLoading:方法中,我将NSMutableData对象保存到文件系统。 都好。 除了:如果文件不存在网站,我的代码仍然运行,获取数据并保存文件。 如何在下载请求之前检查文件是否存在?

iPhone – NTLM,基本和其他授权使用asynchronousNSURLConnection

这是一个问题:我需要实现HTTP基本授权和MS NTLM授权。 我使用asynchronousNSURLConnection,所以我收到 -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 回电话。 这个方法的完整代码如下所示: -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSString* authMethod = [[challenge protectionSpace] authenticationMethod]; NSLog(@"Authentication method: %@", authMethod); NSString *userName = self.login; if ([authMethod isEqualToString:NSURLAuthenticationMethodNTLM]) { userName = [userName lastElementAfterSlash]; } else if ([authMethod isEqualToString:NSURLAuthenticationMethodNegotiate]) { userName = [NSString stringWithFormat:@"%@@%@", userName, self.url.host]; } if ([challenge previousFailureCount] <= 1) { […]

Swift – 在发送POST请求时从NSURLSession返回数据

我可以使用下面的代码在Swift中发送一个POST请求 func post() -> String{ let request = NSMutableURLRequest(URL: NSURL(string: "http://myserverip/myfile.php")!) request.HTTPMethod = "POST" let postString = "data=xxxxxxx" request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { println("error=\(error)") return } println("response = \(response)") let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) println("responseString = \(responseString!)") } task.resume() return "";//how […]

在另一个类的方法内获得NSURLConnection响应(来自助手类)

我有一个类,“WebAPI”,处理所有的Web API调用,类使用NSURLConnection通过其基于asynchronous委托的调用。 每当一个对象需要与Web API进行通信,它将使用WebAPI的一个实例,并在login的情况下调用所需的方法,如下所示从AppDelegate进行以下调用: – (void)applicationDidFinishLaunching:(NSNotification *)aNotification { WebAPI *webAPI = [[WebAPI alloc] init]; [webAPI performLoginWithUserName:@"test1@myserver.com" andPassword:@"password"]; } 问题是一旦执行了performLoginWithUserName:和Password调用,代码就会继续,并且在WebAPI.m中实现的委托方法中接收到任何/所有响应。 这是一个真正的问题,因为我需要能够获得响应代码以及从WebAPI调用所源自的类方法中接收到的任何数据。 我想能够这样做: – (void)applicationDidFinishLaunching:(NSNotification *)aNotification { WebAPI *webAPI = [[WebAPI alloc] init]; WebAPIResponse * webAPIRespnse = [webAPI performLoginWithUserName:@"test1@myserver.com" andPassword:@"password"]; } WebAPIResponse类是一个自定义类,其中将包含HTTP状态代码和接收到的任何数据。 这是可以实现的,如果我更改WebAPI.m使用NSURLConnection sendSynchronousRequest,但不能让我接收所有的HTTP代码。 满足这个要求的最好方法是什么? 感谢您的帮助。

错误消息:从公共有效用户设置和系统组容器中读取systemgroup.com.apple.configurationprofilespath为

当我使用下面的代码时,我有错误消息: [NSURLConnection sendAsynchronousRequest:request queue:myQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; NSLog(@"response status code: %ld, error status : %@", (long)[httpResponse statusCode], error.description); if ((long)[httpResponse statusCode] >= 200 && (long)[httpResponse statusCode]< 400) { // do stuff [self requestFunction]; //Web Service } }]; 错误消息: 2017-02-27 01:13:30.088641 RENAULT[210:12313] [MC] System group container […]

我可以从NSHTTPURLResponse中的HTTP状态行访问“Reason Phrase”(原因短语)吗?

指定HTTP的RFC 2616在6.1.1节中说明了状态行的那部分是一个3位的数字状态码和一个文本的“原因短语”。 我正在构build一个iPhone应用程序,即使用NSURLConnection通过HTTP访问数据。 我可以毫无问题地得到HTTP状态码,但是我怎样才能访问“Reason Phrase”? 这是我的连接:didReceiveResponse:方法 – (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; httpStatusCode = [httpResponse statusCode]; // Reason Phrase ?? } 具体而言,我不是指“xxx代表什么意思”文本的解释。 我可以在RFC中查找那些是静态的。 我的意思是服务器在状态行中生成的文本。 这种状态线的一个例子是: HTTP/1.1 412 ClientAppVersion: 0.10 < 0.11 原因短语在这里是“ClientAppVersion:0.10 <0.11”。 这个例子也给了我想要做的一些提示。 我正在构build一个类似REST的API,因此,我应该使用HTTP状态代码来指示错误。 但HTTP状态代码是为HTTP而不是我的应用程序发明的,所以我尝试将额外的信息塞入到Reason Phrase中。

在iOS上,你可以做一个同步networking请求(但不是在主线程),仍然进展callback(在一个单独的,非主线程)?

在iOS上,你可以做一个同步的networking请求(离开主线程)并获得进度callback(在一个单独的,非主线程)? 我有一个串行(一次一个操作)的后台队列,可以运行所有耗时的作业,而这些作业现在不需要完成。 我确实想要显示下载作业的进度。 它看起来不像你可以实例化一个NSURLConnection并configuration一个委托,启动同步连接,然后获取进度callback。 有没有办法在该背景队列上进行同步请求(同步,因为它后面的作业不会启动,直到完成),仍然得到setProgress:可以发送更新进度条的callback? (callback将不得不在一个不同的队列线程,因为我的串行队列的线程被阻塞,直到请求完成。) 苹果的NSURLConnection文档说,同步请求实际上build立在asynchronous的幕后。 我必须重新实施吗? 我需要一种方法来阻塞线程,直到请求完成/失败。 到目前为止,最好的线索是NSOperationQueue的waitUntilFinished方法,但我不想开始asynchronous并持续轮询同步方法。 NSURLConnection讨论 一个同步加载是build立在该类可用的asynchronous加载代码之上的。 调用线程在asynchronous加载系统对专门为此加载请求生成的线程执行URL加载时被阻塞。 在调用线程中不需要特殊的线程或运行循环configuration来执行同步加载。