如何在swift中使用标头来完成api调用

时间:2017-04-03 01:28:35

标签: ios swift rest api

我想使用JWT令牌安全地从API提供我的数据。所以目前我已经在后端实现了安全性,并且每个ajax调用了标题

url:"https://dataurl,
        contentType : "application/json; charset=utf-8",
        headers : TokenHeader(),

但是现在我想发送相同的数据以供在swift中开发的IOS应用程序使用。我不是IOS移动开发人员,当我调查他们如何进行其余调用时,我发现这样的东西可以完成:

let todosEndpoint: String = "https://dataurl"
guard let todosURL = URL(string: todosEndpoint) else {
  print("Error: cannot create URL")
  return
}
var todosUrlRequest = URLRequest(url: todosURL)
todosUrlRequest.httpMethod = "GET"
let newTodo: [String: Any] = ["title": "My First todo", "completed": false, "userId": 1]
let jsonTodo: Data
do {
  jsonTodo = try JSONSerialization.data(withJSONObject: newTodo, options: [])
  todosUrlRequest.httpBody = jsonTodo
} catch {
  print("Error: cannot create JSON from todo")
  return
}

let session = URLSession.shared

let task = session.dataTask(with: todosUrlRequest) {
  (data, response, error) in
  guard error == nil else {
    print("error calling POST on /todos/1")
    print(error)
    return
  }
  guard let responseData = data else {
    print("Error: did not receive data")
    return
  }

所以现在我的问题就像在我的网络应用程序中调用ajax如何从移动应用程序端使用休息服务。是否感谢任何帮助?

2 个答案:

答案 0 :(得分:1)

我建议你使用这样的标题

let request = NSMutableURLRequest(url: NSURL(string: urlString)! as URL)
request.addValue("application/json",forHTTPHeaderField: "Content-Type")
request.addValue("application/json",forHTTPHeaderField: "Accept")
request.cachePolicy = .reloadIgnoringLocalCacheData

答案 1 :(得分:0)

你想要的东西(取决于你需要发送的标题值):

todosUrlRequest.setValue("token value", forHTTPHeaderField: "Authorization")