2017-08-02 9 views
-1

私はSWIFT 3に1つの問題があります。何か別のURLで残りのAPIを消費すると、このURL「http://sistemas2.laprensa.com.ni/LaPrensa/api/Beacons」が動作していないため、このURL「https://app.ccn.com.ni:8080/BeerWayNicaragua/api/BusinessType」が機能しています。私はJSONをチェックしてOKです。問題が何であるかを教えてください。残りのAPI Swift 3を消費する

ませワーキング

let url = "http://sistemas2.laprensa.com.ni/LaPrensa/api/Beacons" 
    let requestURL: URL = URL(string: url)! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: requestURL) 
    urlRequest.httpMethod = "GET" 
    urlRequest.addValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type") 
    urlRequest.addValue("application/json; charset=UTF-8", forHTTPHeaderField: "Accept") 
    let task = URLSession.shared.dataTask(with: urlRequest as URLRequest) {data,response,error in 

     if response != nil { 
      let httpResponse = response as! HTTPURLResponse 
      let statusCode = httpResponse.statusCode 

      if (statusCode == 200) { 

       do { 
        let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) 
        callback((json as? [[String: AnyObject]])!) 
       }catch { 
        print("Error with Json: \(error)") 
       } 
      } 
     } 
    } 
    task.resume() 

そして、これが動作している、唯一の私は、URLを変更します。私は何が起こったのかわかりません。

let url = "https://app.ccn.com.ni:8080/BeerWayNicaragua/api/BusinessType" 
    let requestURL: URL = URL(string: url)! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: requestURL) 
    urlRequest.httpMethod = "GET" 
    urlRequest.addValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type") 
    urlRequest.addValue("application/json; charset=UTF-8", forHTTPHeaderField: "Accept") 
    let task = URLSession.shared.dataTask(with: urlRequest as URLRequest) {data,response,error in 

     if response != nil { 
      let httpResponse = response as! HTTPURLResponse 
      let statusCode = httpResponse.statusCode 

      if (statusCode == 200) { 

       do { 
        let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) 
        callback((json as? [[String: AnyObject]])!) 
       }catch { 
        print("Error with Json: \(error)") 
       } 
      } 
     } 
    } 
    task.resume() 
+2

これはhttpとhttpsが原因である可能性があります。 info.plistにNSAppTransportSecurityキーを追加しましたか? –

+0

動作していないと言うと、statusCode == 200を取得していないか、APIを解析できない、またはできないことがあります。 info.plistにNSAppTransportSecurityキーを追加しましたか? –

+0

関連しませんが、GETリクエストを送信するときには 'URLRequest'はまったく必要ありません。 URLを渡すだけです。 Swiftでは 'NSMutableURLRequest'を使わないでください。ネイティブ構造体 'URLRequest'があります。 – vadian

答えて

1

要求を実行しようとすると、コンソールログが表示されます。あなたは不平に気付くでしょう。

App Transport Securityは安全でないため、クリアテキストのHTTP(http://)リソース をブロックしました。一時的な例外は、アプリのInfo.plistファイル で設定できます。

だからここソリューションは、先に

ゴーであるとのplistエディタからVIS源に

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

または

enter image description here

をあなたのInfo.plistファイルに次のキーを追加します。

+1

あなたのコメントを下さった方は、これを投票してください。これは正確な問題と解決策です。または、そうではないと思われる場合は、回答を提供してください。 –

+1

ダウン投票者のコメント待ち!!!!または、http://で必要なものを使用してパスを取得します。お願いします!! –

+0

ありがとうMohammad Sadiq、あなたはこれが解決策であることは間違いありません –

関連する問題