要在iOS中发出http请求,我们将使用DataTask和会话。我们将创建配置,会话,URL,请求和dataTask对象。让我们看看我们将要执行的步骤。
HTTP请求的类型可以不同,这取决于我们要对服务器发出的请求类型。以下是请求的基本类型。
“ GET”,“ POST”,“ PUT”,“ DELETE”,我们可以根据我们的API使用其中任何一个。每种请求的基本知识都相同,如下所示。让我们来看一下带有DELETE类型的请求的示例。
首先我们需要创建一个会话对象,这是默认配置。
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
然后,我们需要创建所需类型的URL请求,可以将其获取,发布,删除或放置。在此示例中,我们看到的是“删除”类型。
let url = URL(string: URLString)
//让url = NSURL(string:urlString as String)
var request : URLRequest = URLRequest(url: url!)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
创建请求对象后,我们需要使用上面刚刚创建的URL执行dataTask。这就是我们完整的dataTask方法现在的样子。
let dataTask = session.dataTask(with: url!) { data,response,error in
guard let httpResponse = response as? HTTPURLResponse, let receivedData = data
else {
print("error: not a valid http response")
return
}
switch (httpResponse.statusCode) {
case 200: //成功的回应。
break
case 400:
break
default:
break
}
}
dataTask.resume()
现在,我们可以将其嵌入到函数中并在我们的代码中使用。
hitAPI(_for URLString:String) {
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let url = URL(string: URLString)
//让url = NSURL(string:urlString as String)
var request : URLRequest = URLRequest(url: url!)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let dataTask = session.dataTask(with: url!) { data,response,error in
//1:检查HTTP响应以获取成功的GET请求
guard let httpResponse = response as? HTTPURLResponse, let receivedData = data
else {
print("error: not a valid http response")
return
}
switch (httpResponse.statusCode) {
case 200:
//成功的回应。
break
case 400:
break
default:
break
}
}
dataTask.resume()
}
注意:您可能需要允许info.plist文件中的“传输安全性”异常访问某些API。
此示例未显示任何输出,因为删除某些数据需要使用API。