我试图从网址下载简单图片 http://d1vqbpto5tbbz0.cloudfront.net/blog/wp-content/uploads/2014/08/25215844/ios-logo1.png
这是通过浏览器进行简单的URL访问而无需任何登录。
我尝试过这段代码:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.timeoutIntervalForRequest = timeout;
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
[[urlSession dataTaskWithURL:urlImage] resume];
仅此而我接受身份验证挑战。
它是什么原因?
我已经完成了stackoverflow并找到了这些链接:
在所有链接中,都提到输入user:password。我可以输入什么用户名和密码?
答案 0 :(得分:1)
您已实施NSURLSessionDelegate
协议方法didReceiveChallenge
。
每当发生身份验证质询时,此方法都会获得调用。你必须提到它是一个值得信赖的服务器。
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition
disposition, NSURLCredential *credential))completionHandler
{
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}
答案 1 :(得分:0)
看起来这个问题很可能是因为该网站没有使用SSL / TSA。要处理挑战并加载图像,请遵守NSURLSessionDelegate
委托,并实施以下方法。
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler;
修改强>
另一种选择是在plist中指定任意加载以允许加载HTTP链接。它不推荐用于已发布的应用程序,但对于测试它会更好。
将以下内容添加到plist
:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>