#ios #web-services #cfnetwork #proxy-authentication
#iOS #веб-сервисы #cfnetwork #прокси-аутентификация
Вопрос:
Я успешно вызываю WS из своего приложения с помощью сгенерированного кода WSDL2Objc. Я отправил свое приложение коллегам для тестирования, и они сообщили мне, что приложение вылетает при попытке подключиться к WS. Дело в том, что iPad отстает от прокси-сервера HTTP-аутентификации.
Насколько я понимаю, прокси-сервер аутентификации перенаправляет соединение на страницу HTTP, на которой отображается сообщение типа «Пожалуйста, укажите учетные данные»
Я должен избежать сбоя и просто показать ошибку, но я не могу понять, где происходит сбой. Я обозначил журнал сбоев, и поток, в котором произошел сбой, — это вставленный.
Любая помощь приветствуется.
Thread 3 Crashed:
0 CoreFoundation 0x3592d75c CFHash 124
1 CoreFoundation 0x359d89f4 __CFBasicHashStandardHashKey 8
2 CoreFoundation 0x359da614 ___CFBasicHashFindBucket_Linear_NoCollision 40
3 CoreFoundation 0x359dc680 __CFBasicHashAddValue 684
4 CoreFoundation 0x35932f98 CFDictionarySetValue 68
5 CFNetwork 0x37516684 URLCredentialStorage::_SetCredentialForProtectionSpace(__CFDictionary*, _CFURLCredential const*, _CFURLProtectionSpace*) 80
6 CFNetwork 0x37516f4c URLCredentialStorage::setDefaultCredentialForProtectionSpace(_CFURLCredential const*, _CFURLProtectionSpace*) 340
7 CFNetwork 0x374e0e78 CFURLCredentialStorageSetDefaultCredentialForProtectionSpace 20
8 CFNetwork 0x3750cbe0 HTTPProtocol::RemoveCredentialPasswordForProtectionSpace(_CFURLCredential const*, _CFURLProtectionSpace*, unsigned char) 60
9 CFNetwork 0x3750e49c HTTPProtocol::_CFHTTPProtHasCredentialsForChallenge(__CFHTTPMessage*) 832
10 CFNetwork 0x3750f85a HTTPProtocol::attemptAuthentication(__CFHTTPMessage*) 170
11 CFNetwork 0x3750f9a4 HTTPProtocol::performHeaderRead() 280
12 CFNetwork 0x3750fee6 HTTPProtocol::httpReadStreamEvent(unsigned long) 82
13 CFNetwork 0x37510024 HTTPProtocol::_httpReadStreamCB(__CFReadStream*, unsigned long, void*) 4
14 CoreFoundation 0x35946a1a _signalEventSync 70
15 CoreFoundation 0x35947626 _cfstream_shared_signalEventSync 198
16 CoreFoundation 0x3599ea72 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 6
17 CoreFoundation 0x359a0758 __CFRunLoopDoSources0 376
18 CoreFoundation 0x359a14e4 __CFRunLoopRun 224
19 CoreFoundation 0x35931ebc CFRunLoopRunSpecific 224
20 CoreFoundation 0x35931dc4 CFRunLoopRunInMode 52
21 Foundation 0x36f747f6 [NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] 206
22 Foundation 0x36f67382 -[NSThread main] 38
23 Foundation 0x36fd95c6 __NSThread__main__ 966
24 libsystem_c.dylib 0x33af730a _pthread_start 242
25 libsystem_c.dylib 0x33af8bb4 thread_start 0
Ответ №1:
В управлении HTTP-сеансом произошла небольшая ошибка. Мне понравилась подсказка в этом блоге EXC_BREAKPOINT странная ошибка, по сути, проблема заключалась в didReceiveAuthenticationChallenge NSURLConnection. По некоторым причинам и только для какой-либо службы didReceiveAuthenticationChallenge передал соединению нулевые учетные данные, чтобы, как предполагает блоггер, я попытался сохранить эти строки учетных данных, и ТОЧКА ПРЕРЫВАНИЯ EXC_BREAK исчезла.