/* info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
*/
//该方法为异步执行,所以不需要创建单独线程。
@IBAction func btn1(_ sender: Any) {//get
let urlString = "http://appio.cn/WebTest/LoginTest.jsp"let url = URL(string:urlString)
//创建请求对象
let request = URLRequest(url: url!)
let session = URLSession.shared
let dataTask = session.dataTask(with: request,
completionHandler: {(data, response, error) -> Void in
if error != nil{
print(error.debugDescription)
}else{
let str = String(data: data!, encoding: String.Encoding.utf8)
print(str ?? "helllo")
}
}) as URLSessionTask
//使用resume方法启动任务
dataTask.resume()
}
@IBAction func btn2(_ sender: Any) {//post
let StrUrl = "http://appio.cn/WebTest/LoginCheck" //访问url
let StrBody = "username=admin&password=1234" //post提交数据
let postNSData = StrBody.data(using: String.Encoding.utf8 ) //也可以写作 let postData = StrBody.data(using: .utf8)
let url = URL(string: StrUrl)
var request = URLRequest(url: url!) //请求
request.httpMethod = "POST" //Post方法
request.httpBody = postNSData
//初始化请求
let dataTask = URLSession.shared.dataTask(with: request, completionHandler: { (data, resp, err) in
if err != nil {
print(err.debugDescription)
}
else {
let responseStr = String(data: data!, encoding: String.Encoding.utf8)
print(responseStr!) //包体数据
//URLResponse类里没有http返回值, 需要先强制转换!
let httpResponse = resp as? HTTPURLResponse
if (httpResponse != nil) {
if httpResponse!.statusCode == 200 {
//JSON解析, 做逻辑
} else {
//通知UI接口执行失败
}
}
/*
if let response = resp as? HTTPURLResponse {
print("code\(response.statusCode)")
for (tab, result) in response.allHeaderFields {
print("(tab.description) - (result)")
}
}*/
}
}) as URLSessionTask
dataTask.resume() //执行任务
}