How to send a POST request through Swift?(如何通过 Swift 发送 POST 请求?)
问题描述
我有这样的控制器 -
I have my controller like this -
def create
if (@user = User.find_by_email(params[:email])) && @user.valid_password?(params[:password])
render json: @user.as_json(only: [:email,:authentication_token]),status: :created
else
render json:('Unauthorized Access')
end
end
当我使用 Postman 提出此请求时,我选择正文,并形成数据并添加电子邮件和密码.这个作品
When I use Postman to make this request, I choose Body, and form data and adds in the email and password. And this WORKS
如何使用 swift 来做同样的事情?这是我尝试过的
How to use swift to do the same? This is what I have tried
let url = URL(string: "http://localhost:3000/api/v1/user_serialized/")
let config = URLSessionConfiguration.default
let request = NSMutableURLRequest(url: url!)
request.httpMethod = "POST"
let bodyData = "email=Test@test.com&password=Test1234"
request.httpBody = bodyData.data(using: String.Encoding.utf8);
let session = URLSession(configuration: config)
let task = session.dataTask(with: url! as URL, completionHandler: {(data, response, error) in
let json = JSON(data:data!)
debugPrint(json)
})
task.resume()
推荐答案
我认为你应该将你的请求而不是 url 传递给 session.dataTask
I think you should pass your request instead of the url to session.dataTask
这是我的代码的样子:
private let url = URL(string: "http://example.com/")!
func httpPost(jsonData: Data) {
if !jsonData.isEmpty {
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = jsonData
URLSession.shared.getAllTasks { (openTasks: [URLSessionTask]) in
NSLog("open tasks: (openTasks)")
}
let task = URLSession.shared.dataTask(with: request, completionHandler: { (responseData: Data?, response: URLResponse?, error: Error?) in
NSLog("(response)")
})
task.resume()
}
}
这篇关于如何通过 Swift 发送 POST 请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!