Этот HTTP-вызов, кажется, висит, и я не понимаю, почему. Строка ведения журнала после вызова никогда не запускается.
Я почти наверняка делаю что-то очень глупое, но если кто-нибудь может понять, что это такое, я был бы благодарен. Насколько я вижу, мой код эквивалентен документам.
Кажется, что не имеет значения, какой URL я использую, и HTTP-запрос никогда не регистрируется сервером (если указано на нем).
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLResponse *res = nil;
NSError *err = nil;
NSLog(@"About to send req %@",req.URL);
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
NSLog(@"this never runs");
Любые идеи?
Обновление
Спасибо всем, кто выложил до сих пор. Все еще видя проблему. Немного подробнее:
- Код тестируется на устройстве
- Другие HTTP-вызовы работают нормально, поэтому, если это проблема сети, это нетривиальная функция
- Код провалился за обычный таймаут. Я знаю, что он висит более 20 минут. Я убил его в тот момент, но я предполагаю, что он будет продолжать висеть.
- В настоящее время я не использую делегат и не планирую, см. ниже.
- В других местах приложения я использую
sendAynchronousRequest
, но в этом случае мне нужно передать возвращаемое значение (и я не в основном потоке), поэтомуsendSynchronousRequest
- единственный параметр, который я знаю. - В случае, если это имеет значение, контекст заключается в том, что я реализую протокол
NSURLCache
, в частности методcachedResponseForRequest
, для которого требуется вернутьNSCachedURLResponse