2017-01-23 9 views
1

基本認証でjsonでデータを取得するにはどうすればよいですか?サンプルコードから辞書にデータを表示したいのですが、どうすればいいですか?基本認証を迅速に取得する3

 let username = "user" 
    let password = "pass" 

    let loginString = String(format: "%@:%@", username, password) 
    let loginData = loginString.data(using: String.Encoding.utf8)! 
    let base64LoginString = loginData.base64EncodedString() 

    // create the request 
    let url = URL(string: "http://xxx.xxx.xxx.com:111/customer")! 
    var request = URLRequest(url: url) 
    request.httpMethod = "GET" 
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") 

    // fire off the request 
    // make sure your class conforms to NSURLConnectionDelegate 
    let urlConnection = NSURLConnection(request: request, delegate: self) 

答えて

0

これがあなたの探しているものであるかどうかは不明です。あなたが応答を取得するときしかし、あなたはこれを試すことができます。

let json = try JSONSerialization.jsonObject(with: responseObject as! Data, options: .mutableContainers) as? [String: Any] 

プリント(JSON)

+0

値は – ibmot

+0

あなたの取得がnilである応答nilでありますか?あなたの応答オブジェクトはあなたがそれを印刷したときのように見えるでしょうか? – Wazza

0

私はURLRequestオブジェクトの代わりにAlamofireを使用することをお勧めします。次に、リクエストの例を示します。

let headers: HTTPHeaders = ["Authorization": defaults.string(forKey: "apiKey")!] 

    Alamofire.request("https://../getBeacons", method: .get, headers: headers) 
     .responseJSON { (responseObject) -> Void in 

      if responseObject.result.isSuccess { 
       let resJson = JSON(responseObject.result.value!) 
       print(resJson) 
       for (_, subJson) in resJson["data"] { 
beaconData.id.append(subJson["id"].intValue) 
beaconData.id.append(subJson["min"].intValue) 
beaconData.id.append(subJson["maj"].intValue) 

} 
      } 
      if responseObject.result.isFailure { 
       let error : Error = responseObject.result.error! 
       print(error) 
      } 
    } 

} 

先頭には、Webサービスから受け取ったデータを保持する配列を持つ構造体を作成します。

struct beaconData { 
    static var id = [Int]() 
    static var maj = [Int]() 
    static var min = [Int]() 
} 

あなたが使用してデータを取り出すことができます。

beaconData.id[index]