问题
I'm trying to run a HTTP Request in Swift3, to POST 2 parameters to a URL.
Example:
Link:
http://test.tranzporthub.com/street45/customer_login.php
Params:
{
"user_id":"chaitanya3191@gmail.com",
"password":"123"
}
What is the simplest way to do that?
I don't even want to read the response. I just want to send that to perform changes on my database through a PHP file.
回答1:
I guess, you are totally newbie but here is something that you can try in SWIFT 3:
- Open info.plist file (Double Click OR Right Click > Open As > Source Code)
Paste this code before closing
</dict>
and</plist>
tags:<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>tranzporthub.com</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict>
Now Open your view Controller and paste this code where you want to make post request:
var request = URLRequest(url: URL(string: "http://test.tranzporthub.com/street45/customer_login.php")!) request.httpMethod = "POST" let postString = "user_id=chaitanya3191@gmail.com&password=123" request.httpBody = postString.data(using: .utf8) let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { // check for fundamental networking error print("error=\(error)") return } if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors print("statusCode should be 200, but is \(httpStatus.statusCode)") print("response = \(response)") } let responseString = String(data: data, encoding: .utf8) print("responseString = \(responseString)") } task.resume()
NOTE: You can remove print statements if you don't need!
Hope this helps! :)
回答2:
@IBAction func postAction(_ sender: Any) {
let Url = String(format: "your url")
guard let serviceUrl = URL(string: Url) else { return }
// let loginParams = String(format: LOGIN_PARAMETERS1, "test", "Hi World")
let parameterDictionary = ["username" : "@kilo_laco", "tweet" : "Hi World"]
var request = URLRequest(url: serviceUrl)
request.httpMethod = "POST"
request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
return
}
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
}catch {
print(error)
}
}
}.resume()
}
来源:https://stackoverflow.com/questions/43779111/http-request-in-swift-with-post-method-in-swift3