2017-05-19 2 views
1

httpsリクエストを使用して、UIWebViewの読み込みに問題があります。 私はいくつかの関連する答えを読んだが、彼らは私をさらに混乱させた。 ここに私のコードです: リンク、私は別のページにリダイレクトされます使用しています。はUIWebViewでhttpsを読み込めません

しかし、すべてが

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let urlConnection: NSURLConnection = NSURLConnection(request: request as URLRequest, delegate: self)! 
     urlConnection.start() 
    return true 
} 

func connection(_ connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: URLProtectionSpace) -> Bool { 
    return true 
} 

func connection(_ connection: NSURLConnection, didReceive challenge: URLAuthenticationChallenge) { 
    let host = "www.ad.admitad.com" 

    if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust && 
     challenge.protectionSpace.host == host { 
     let credential = URLCredential(trust: challenge.protectionSpace.serverTrust!) 
     challenge.sender!.use(credential, for: challenge) 
    } else { 
     challenge.sender!.performDefaultHandling!(for: challenge) 
    } 
} 
次のように私はこれらのプロトコル NSURLConnectionDelegateに準拠しようとしたこの答え UIWebView to view self signed websites (No private api, not NSURLConnection) - is it possible?

の助けを借りてhttphttpsを変更すると、細かいロードUIWebViewDelegate

class PartnersWebViewControlerViewController: UIViewController, NSURLConnectionDelegate, UIWebViewDelegate { 

    @IBOutlet weak var admitadWebView: UIWebView! 

    let url = "https://ad.admitad.com/g/54tjzvqfv92260a476c4ffa09d8e84/subid/26/" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     admitadWebView.delegate = self 
     let requestURL = URL(string:url) 
     let request = URLRequest(url: requestURL!) 
     admitadWebView.loadRequest(request) 

    } 
} 

しかし、まだ私は白い画面があり、何もログに記録しません。

ご協力いただきありがとうございます。私がそのような問題に立ち寄ったのは初めてのことです。

私は、IOS 10.3 UPDを使用しています:この問題は、(iphone 6)

答えて

0

は、私の知る限りでは、Appleが唯一のあなたはセキュリティ上の理由のためにHTTPSを使用することができますデバイス上で起動する場合にのみ発生します。 HTTPウェブサイトにアクセスするには、Info.plist(サポートファイルフォルダ内)を変更する必要があります。そこに新しいキーを追加する必要があります:

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>yourwebsite.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
      <key>otherdomain.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
     </dict> 
    </dict> 

"yourwebsite.com"をアクセスするウェブサイトのドメインに置き換えてください。これはxcodeにそのWebサイトにアクセスしたいことを伝え、それが安全でないHTTPであることを知っていることを伝えます。他のドメインにもアクセスする場合は、前述の "otherdomain"のように.plistの辞書にキーを追加できます。 (のhttp://)

0

参照エラーログが

は、「アプリケーションのトランスポート・セキュリティは、平文HTTPをブロックしたが存在します。リソースの負荷、それは安全ではないので、一時的な例外は、アプリケーションのInfo.plistファイルを介して設定することができます。 「

はあなたのInfo.plistにここ enter image description here

enter image description here

参照のスクリーンショットを、これを追加します。

+0

ステータスはすでに変更されていますが、http:// – dand1

+0

ではなく、httpsで問題が発生しています。あなたのアプリにロードされていない場合は、URLに問題はありません。あなたは何か他のことを間違えたかもしれません。 – ChanWarde

+0

ああ、はい、私はシミュレータで起動しようとし、それは働いた。しかし、問題は私のデバイスに残ります – dand1

関連する問題