如何在 NSURLConnectionDelegate willSendRequestForAuthenticationChallenge 中获取 http body
How to get http body in NSURLConnectionDelegate willSendRequestForAuthenticationChallenge
我有一个 HTTP Basic 服务器,有时我需要用户在登录前做出选择。我想我会通过发送一个 HTTP 响应 401 来做到这一点,HTTP json 内容24=] 提供客户端需要显示给用户的数据。
但是,我无法完全理解我如何在 willSendRequestForAuthenticationChallenge
方法中获得响应 body 内容。由于我使用 Basic Auth 并直接将 usr/pwd 作为 http“Authorization
”header 提供,因此每当用户无法登录或 he/she 需要登录时都会调用此方法我说的选择。
所以...我有 NSURLAuthenticationChallenge
,但我看不到任何从 object 读取 body 的方法。
如果有body可以帮忙,我将不胜感激!
您无法在请求过程中的那个点获取 body 数据,因为 URL 请求可能会要求您决定是否取消并在下载之前重试身份验证body 数据。这是时间问题。
您可以做的是:
- 允许在没有凭据的情况下完成请求。这将导致 URL 连接下载响应 body(错误消息)。然后,您的支持代码可以识别 401 响应,解析 body,并在重试时提供凭据。
- 可选择将上述逻辑包装在自定义 NSURL 协议 class 中,以便它对应用程序的其余部分透明
或者:
- 在自定义 HTTP header 中提供附加数据。我认为您可能可以从保护空间的 failureResponse 方法中获得 NSURLResponse object,并从那里获得 headers。
不过,我不能 100% 确定此时可以获得 header 字段。当然,您可以使用 NSURL 协议或使用前面描述的自定义包装器代码来完成。
我有一个 HTTP Basic 服务器,有时我需要用户在登录前做出选择。我想我会通过发送一个 HTTP 响应 401 来做到这一点,HTTP json 内容24=] 提供客户端需要显示给用户的数据。
但是,我无法完全理解我如何在 willSendRequestForAuthenticationChallenge
方法中获得响应 body 内容。由于我使用 Basic Auth 并直接将 usr/pwd 作为 http“Authorization
”header 提供,因此每当用户无法登录或 he/she 需要登录时都会调用此方法我说的选择。
所以...我有 NSURLAuthenticationChallenge
,但我看不到任何从 object 读取 body 的方法。
如果有body可以帮忙,我将不胜感激!
您无法在请求过程中的那个点获取 body 数据,因为 URL 请求可能会要求您决定是否取消并在下载之前重试身份验证body 数据。这是时间问题。
您可以做的是:
- 允许在没有凭据的情况下完成请求。这将导致 URL 连接下载响应 body(错误消息)。然后,您的支持代码可以识别 401 响应,解析 body,并在重试时提供凭据。
- 可选择将上述逻辑包装在自定义 NSURL 协议 class 中,以便它对应用程序的其余部分透明
或者:
- 在自定义 HTTP header 中提供附加数据。我认为您可能可以从保护空间的 failureResponse 方法中获得 NSURLResponse object,并从那里获得 headers。
不过,我不能 100% 确定此时可以获得 header 字段。当然,您可以使用 NSURL 协议或使用前面描述的自定义包装器代码来完成。