【发布时间】:2019-06-11 03:48:18
【问题描述】:
我正在尝试通过 Swift 在我的 Wordpress 博客上发帖。我正在使用带有 Java Web 令牌 (JWT) 身份验证的 Wordpress REST API。第一步是使用 HTTP POST 方法将用户凭据传递给服务器。然后,服务器返回一个 JSON 对象,其中包含身份验证所需的 JWT 令牌。我可以使用像 Postman 这样的 REST API 程序来完成这一切,但我在使用 Swift 代码时遇到了问题。
我的凭据发送得很好,服务器返回了一些数据,但我无法从这些数据中获取令牌。
此 Swift 代码由 Postman 应用生成:
import Foundation
let headers = [
"Content-Type": "application/json",
"cache-control": "no-cache",
]
let parameters = [
"username": "myUsername",
"password": "myPassword"
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://myDomain/wp-json/jwt-auth/v1/token")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
当我在 Postman 中执行 HTTP POST 命令时,我得到了这个 JSON:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvY3F1aWNrLmNhIiwiaWF0IjoxNTQ3Njc3MDMzLCJuYmYiOjE1NDc2NzcwMzMsImV4cCI6MTU0ODI4MTgzMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMyJ9fX0.DgxmmSFKnEdXuWi5EiBk1BpFvWrD57KIE8TiWazId-4",
"user_email": "myEmail",
"user_nicename": "myUsername",
"user_display_name": "myUsername"
}
无论如何使用 Swift 可以获得同样的结果吗?我想这是由 session.dataTask 方法返回的,我只是不知道如何解析它。
【问题讨论】: