我怀疑它与这个新的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
哇!似乎只有当我的回复足够长时才能立即得到它!响应的时间越长,我就越快得到它!