2009-03-10 14 views
10

Próbuję uzyskać dostęp do niektórych usług internetowych w aplikacji na iPhone'a.Jak wykonać wyzwanie NTLM na iPhone'a

Jeśli I GET na stronie .asmx, uwierzytelniam i otrzymam WSDL zgodnie z oczekiwaniami.

Jednak, jeśli I POST na stronie .asmx, ustawienie SOAPAction, Content-Type, Content-Length i HTTPBody, po prostu otrzymuję wiadomości didReceiveAuthenticationChallenge.

Dodatkowo próbuję POST na IIS używając Integrated Windows Authentication (IWA), co oznacza, że ​​próbuję negocjować wyzwanie NTLM.

Odpowiedz

11

Niestety znalazłem odpowiedź. NSURLConnection nie może uwierzytelniać NTLM. Oto post o tym, jak wykonać uwierzytelnianie NTLM przy użyciu stosu CFNetwork.

HTTP Post via the CFNetwork stack

znalazł coś nawet lepiej niż robi wszystko to nuda: Ktoś, kto już to zrobił!
ASIHTTPRequest

Aktualizacja: Jest workaround for iOS 4 który pozwala na uwierzytelnianie NTLM ponownie

+0

Dzięki! ASIHTTPRequest było właśnie tym, czego szukałem. – Dana

2

Wygląda na to, że Twoja usługa internetowa ma inne uprawnienia do odczytu (pobierania) i pisania (przesyłania). Nie sądzę, jest to problem z iPhone lub NSURLConnection w ogóle.

+0

Klient WWW działa prawidłowo i jeśli tworzę aplikacji .NET, który działa dobrze, jak dobrze. Ale sądzę, że mogę sprawdzić uprawnienia na wszelki wypadek. –

+0

Uprawnienia dla GET i POST są identyczne. –

+0

Czy jesteś pewien? Coś, co robi funkcja POST, może wymagać uwierzytelnienia, takiego jak zapis do pliku. Klient .NET najprawdopodobniej uwierzytelnia się dla Ciebie. Czy próbowałeś nawiązać połączenie w debuggerze HTTP? http://ditchnet.org/httpclient/ – Lounges