相关疑难解决方法(0)

NSMutableURLRequest不服从我的timeoutInterval

我正在发布一个小图片,所以我希望超时间隔很短.如果图像在几秒钟内没有发送,它可能永远不会发送.由于某种未知的原因NSURLConnection,无论我设置多短,我都永远不会失败timeoutInterval.

// Create the URL request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                 initWithURL:[NSURL URLWithString:@"http://www.tumblr.com/api/write"]
                                 cachePolicy:NSURLRequestUseProtocolCachePolicy
                                 timeoutInterval:0.00000001];

/* Populate the request, this part works fine */

[NSURLConnection connectionWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)

我有一个断点,- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error但它永远不会被触发.我的图像继续张贴得很好,尽管很小,它们仍然出现在Tumblr上timeoutInterval.

nsurlconnection nsurlrequest nsmutableurlrequest

31
推荐指数
2
解决办法
2万
查看次数

目标C中的长轮询

我有一个应用程序,它使用API​​在网站上获得实时更新.他们使用他们所谓的长轮询技术:

长轮询是传统轮询技术的变体,允许模拟从服务器到客户端的信息推送.通过长轮询,客户端以与普通轮询类似的方式从服务器请求信息.但是,如果服务器没有可用于客户端的任何信息,而不是发送空响应,则服务器保留请求并等待一些信息可用.一旦信息可用(或在适当的超时之后),就会向客户端发送完整的响应.然后,客户端通常会立即从服务器重新请求信息,这样服务器几乎总会有一个可用的等待请求,它可以用来传递数据以响应事件.在web/AJAX上下文中,长轮询也称为Comet编程.

长轮询本身不是推送技术,但可以在无法实现真正​​推动的情况下使用.

基本上,这会在您收到回复后强制将请求发回服务器.在iPhone应用程序中执行此操作的最佳方法是什么?这最终必须在后台运行.

iphone objective-c ipad

12
推荐指数
2
解决办法
1万
查看次数

NSURLConnection忽略Keep-Alive超时?

我正在将我的应用程序转换为使用HTTPS,并希望通过保持打开长期连接来尽可能避免握手成本.

从堆栈溢出中读取Web和其他答案,如果服务器响应Connection,则NSURLConnection应该透明地保持底层套接字打开:keep-alive和Keep-Alive:timeout = N.

但是我看到我的连接只保持打开大约10秒钟.我的Keep-Alive响应设置远不止于此.我也在我的请求标题中发送Connection:keep-alive.

任何人都可以对此有所了解吗?我真的不想使用CFNetwork实现这一目标.

iphone keep-alive nsurlconnection ios

7
推荐指数
1
解决办法
5172
查看次数

NSURLConnection没有回应

我正在尝试从URL获取一些数据,但出于某种原因,当我执行以下操作时没有任何反应.无论是didReceiveResponse:,didReceiveData:,didFailWithError:或者connectionDidFinishLoading:是达到了,除非我添加超时通过这样做我的要求:[request setTimeoutInterval:10.0]

这是我正在做的事情:

-(void)getConfigFromServer{
    [self getContentAtURL:kUrlGetUser];
}

//Va chercher le contenu à l'URL passée en paramètre
- (void)getContentAtURL: (NSURL *)url {

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSString * userLogin = [userDefaults objectForKey:@"UserLogin"];
    NSString * userPassword = [userDefaults objectForKey:@"UserPassword"];
    NSURL * urlFinal = [NSURL URLWithString:[NSString stringWithFormat:@"%@", url]];
    NSLog(@"Request : %@", [NSString stringWithFormat:@"%@", url]);
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:urlFinal];  
    [request setHTTPShouldHandleCookies:NO];
    [request setTimeoutInterval:10.0];

    NSString *sourceString = …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsurlconnection nsurlrequest ios5

3
推荐指数
1
解决办法
4153
查看次数

长时间运行的REST API

我需要连接的后端API大约需要3-4分钟才能返回响应.iOS客户端似乎在60秒(这是默认值)超时,我无法弄清楚如何延长时间.

我试图将NSURLRequest的timeoutInterval设置为一个大数字,并设置Connection:Keep-Alive标头,但我没有运气.这是我正在使用的代码,省略了一些API细节:

NSURL *url = [NSURL URLWithString:@"myAPI"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"POST"];

NSString *postString = @"key1=val1&key2=val2...";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

request.timeoutInterval = 600.0f;

[request setValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
     NSLog(@"data = %@", data);
}];
Run Code Online (Sandbox Code Playgroud)

即使后端API仍在处理请求,也不会返回任何数据并且所有响应头字段都为空.

我听说我可能需要设置一个名为"socketTimout"的区间,以便套接字知道保持连接打开的时间更长,但我不知道在哪里设置它.

iphone cocoa-touch objective-c ios

2
推荐指数
1
解决办法
879
查看次数