我正在使用Apple的首选方法通过willSendRequestForAuthenticationChallenge通过NSURLConnection处理NTLM身份验证挑战。我正在尝试确定如何处理挑战本质上失败的情况(例如,如果用户的密码已经更改,或者这是用户第一次从他们的设备发出Web服务请求),现在应用程序需要处理获取新密码并重试URL请求。
但是,我被困住了。
这就是我想要做的。在进行一些基本测试时,我首先清除凭据存储,以便我可以假装这是用户第一次向需要进行身份验证的URL发出请求。我打电话使用[challenge performDefaultHandlingForAuthenticationChallenge],我希望以某种方式失败,因为存储中还没有凭据。好吧,我意外地在didReceiveData中得到了一个响应,它在401响应字符串中隐藏了401认证错误;但它伪装成从我的URL(Web服务请求)收到的数据。如果我进行后续调用并观察[challenge previousFailureCount],它仍然为0(我想我知道为什么;我仍然没有在凭证存储中保存任何凭据)。
如何在不解析响应数据的情况下正确处理401错误?我认为一个401会被NSURLConnection自动识别出来并让我看到它。