Как выполнить вызов 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 вообще.