一段时间后,NSURLConnection就会缓存并做出反应

时间:2015-10-14 09:43:50

标签: ios objective-c nsurlconnection

我怀疑它与这个新的iOS9 NSAppTransportSecurity有关。

那么发生的事情是我发送了另一方收到的来自iPhone的get请求。然后当另一方发回数据包时,我只会让代表在一段时间后开始做出反应。

似乎存在某种缓存,当它完整时,我才开始得到响应:

//sending
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:data] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:100.0];
[urlRequest setHTTPMethod: @"GET"];
      NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:NO  ];
        [conn scheduleInRunLoop:[NSRunLoop mainRunLoop]
                              forMode:NSDefaultRunLoopMode];
        [conn start];

接收代表是这样的:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSLog(@"respond");

    _responseData = [[NSMutableData alloc] init];
}


    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {

        NSString *got=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"got:%@",got);  //**this logs only once, but all data appears at once.

当我记录回复时,我只看到"得到的字:"来自日志 - 一次。但是多个响应的数据包将齐聚一堂:

//log
respond
got: respond1
respond2
respond3
respond4
got: respond5
got: respond6
got: respond7

responds继续出现,但是自己的委托函数没有被调用。

似乎他向我展示了缓存中的所有FIRST数据包

编辑:

有点奇怪,当我看到响应时,我看到它不在它的http strucute中:

got:HTTP/1.1 RESPOND  1
 Content-Type:application/json

HTTP/1.1 RESPOND  2
 Content-Type:application/json

HTTP/1.1 RESPOND  3
 Content-Type:application/json

HTTP/1.1 RESPOND  4
 Content-Type:application/json

发送时间:

respond="HTTP/1.1 RESPOND  \r\n Content-Type:application/json\r\n\r\n"

编辑2

哇!似乎只有当我的回复足够长时才能立即得到它!

响应的时间越长,我就越快得到它!

0 个答案:

没有答案