前提・実現したいこと
TwitterAPI経由で画像を取得しています。
画像のURLは取得出来たのでセルに渡して画像を表示しようとすると失敗します。
発生している問題・エラーメッセージ
.. App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. .. Cannot start load of Task <..>.<0> since it does not conform to ATS policy .. NSURLConnection finished with error - code -1022
該当のソースコード
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "...TableViewCell", for: indexPath) as! ...TableViewCell cell.idLabel.text = "(indexPath.row + 1)" cell.titleLabel.text = followers[indexPath.row].name cell.name.text = followers[indexPath.row].screenName let urlString = followers[indexPath.row].profile_image_url let url = URL(string: urlString) do{ let data = try Data(contentsOf: url!) cell.userImage.image = UIImage(data: data) } catch { print("failed to get image") } return cell }
試したこと
上記のエラー内容をもとにinfo.plstに特定のドメインのみhttp許可を追記しました。
<dict> <key>NSExceptionDomains</key> <dict> <key>twimg.com</key> <dict> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> </dict> </plist>
それでもエラー内容は変わらずです。
- ドメインの指定の仕方が間違っているのでしょうか?
追加情報
AlamofireImage
を追加して
cell.userImage.af.setImage(withURL: URL(string: urlString)!)
としても画像は表示されず同じようなエラーが出ます
Data(contentsOf:) はローカルのファイルにしか使えません。ネットワークから取得するには URLSession を使うか、SDWebImage などのライブラリを使うと良いでしょう。
https://qiita.com/hcrane/items/422811dfc18ae919f8a4
ありがとうございます
早速 `AlamofireImage` 使ってみたのですが画像は相変らず表示されず..
エラー内容が
Task <...>.<1> finished with error [-1022] Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLStringKey=http://pbs.twimg.com/profile_images/1037549892531572736/uZFclc7I_normal.jpg, NSErrorFailingURLKey=http://pbs.twimg.com/profile_images/1037549892531572736/uZFclc7I_normal.jpg, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <...>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <...>.<1>, NSUnderlyingError=0x600003546f10 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}}
と出ます
info.plstは
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>http://pbs.twimg.com</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
に変更しました。
回答1件
あなたの回答
tips
プレビュー