我在SWIFT 3中遇到了一个问题。当我使用两个不同URL的rest API时,出于某种原因,此URL“http://sistemas2.laprensa.com.ni/LaPrensa/api/Beacons”无法正常工作,此URL“https://app.ccn.com.ni:8080/BeerWayNicaragua/api/BusinessType”正在工作。我检查JSON并确定。请帮助解决问题。Consuming Rest 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()
这可能是由于http和https。您是否在您的info.plist中添加了NSAppTransportSecurity密钥? –
当你说不工作,你没有得到statusCode == 200,或者你不能解析或无法击中API。您是否在您的info.plist中添加了NSAppTransportSecurity密钥? –
不相关,但发送GET请求时根本不需要URLRequest。只需传递网址即可。并且不要在Swift中使用'NSMutableURLRequest'。有一个本地结构'URLRequest'。 – vadian