我正在使用NSURLSession来实现执行REST请求的osx应用程序,并且能够手动或自动配置应用程序请求的代理设置。
我能够使用会话配置执行此操作,并且正在处理简单的上下文。 但是,当涉及需要身份验证的代理时,我遇到了一些问题。
由于某些项目要求,当请求因代理身份验证错误而失败时(状态代码407),我需要显示自己的自定义对话框。
从我目前所读到的内容来看,我没有找到任何使用NSURLSession实现此目的的方法。有一些与身份验证质询相关的委托方法,但在已经向用户显示挑战后称为。
是否有办法跳过显示NSURLSession请求的身份验证质询并改为使用407状态代码失败?
答案 0 :(得分:0)
据我所知,NSURLConnection和NSURLSession都没有要求应用程序在显示该对话框之前处理407响应,并且没有办法改变这一点,没有向Apple提交错误并说服他们在未来版本的iOS或OS X.
目前,我认为您可以做的最好的事情是先使用libcurl发出“垃圾”请求,看看它是否返回407,如果是,请让用户提供新的凭据。它不漂亮,但它在技术上符合您的要求。 : - )
但老实说,这些要求是可疑的。 OS X和iOS用户不希望在应用程序中控制代理设置。它们通常是系统范围内的行为。因此,尝试在应用程序中控制它们是值得怀疑的。所以,如果你在这件事上有任何说法,你应该尝试改变要求。