Как выполнить вызов NTLM на iPhone

Я пытаюсь получить доступ к некоторым веб-сервисам в приложении iPhone.

Если я GET на страницу .asmx, я аутентифицирую и получаю WSDL, как ожидалось.

Однако, если я POST на странице .asmx, установив SOAPAction, Content-Type, Content-Length и HTTPBody, я просто получаю сообщения didReceiveAuthenticationChallenge.

Кроме того, я пытаюсь выполнить POST для IIS с использованием встроенной проверки подлинности Windows (IWA), что означает, что я пытаюсь согласовать вызов NTLM.

Ответ 1

Я, к сожалению, нашел свой ответ. NSURLConnection не может выполнять проверку подлинности NTLM. Вот сообщение о том, как выполнить проверку подлинности NTLM с использованием стека CFNetwork.

HTTP-сообщение через стек CFNetwork

Нашел что-то еще лучше, чем делать всю эту утомительность: кто-то, кто уже это сделал!
ASIHTTPRequest

Обновление: существует обходное решение для iOS 4, которое позволяет повторить проверку подлинности NTLM

Ответ 2

Мне кажется, что ваш веб-сервис имеет разные разрешения на чтение (получение) и запись (пост). Я не думаю, что это проблема с iPhone или NSURLConnection вообще.