Сбой кода WSDL2Objc при проверке подлинности HTTP-прокси — помогите разобраться в журнале сбоев

#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 исчезла.