2017-01-23 53 views
1

如何使用基本身份验证在json中获取数据?我想从我的示例代码中显示字典中的数据,该怎么做?在swift中获取基本身份验证的请求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

你得到的是零响应?打印时,响应对象的外观如何? – 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]