Hi I am very beginner for Swift and I am trying to make NSURLSession "Post" request sending some parameter like my below code
According to my below code response not coming from server can some one help me please
import UIKit protocol sampleProtocal{ func getResponse(result:NSDictionary) func getErrorResponse(error:NSString) } class BackGroundClass: NSObject { var delegate:sampleProtocal? func callPostService(url:String,parameters:NSDictionary){ print("url is===>\(url)") let request = NSMutableURLRequest(URL: NSURL(string:url)!) let session = NSURLSession.sharedSession() request.HTTPMethod = "POST" //Note : Add the corresponding "Content-Type" and "Accept" header. In this example I had used the application/json. request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: []) let task = session.dataTaskWithRequest(request) { data, response, error in guard data != nil else { print("no data found: \(error)") return } do { if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { print("Response: \(json)") self.mainResponse(json) } else { let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)// No error thrown, but not NSDictionary print("Error could not parse JSON: \(jsonStr)") self.eroorResponse(jsonStr!) } } catch let parseError { print(parseError)// Log the error thrown by `JSONObjectWithData` let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) print("Error could not parse JSON: '\(jsonStr)'") self.eroorResponse(jsonStr!) } } task.resume() } func mainResponse(result:NSDictionary){ delegate?.getResponse(result) } func eroorResponse(result:NSString){ delegate?.getErrorResponse(result) } }
import UIKit class ViewController: UIViewController,sampleProtocal { override func viewDidLoad() { super.viewDidLoad() let delegate = BackGroundClass(); delegate.self; let params = ["scancode":"KK03799-008", "UserName":"admin"] as Dictionary<String, String> let backGround=BackGroundClass(); backGround.callPostService("url", parameters: params) } func getResponse(result: NSDictionary) { print("Final response is\(result)"); } func getErrorResponse(error: NSString) { print("Final Eroor code is\(error)") } }
Overview. The NSURLSession class and related classes provide an API for downloading data from and uploading data to endpoints indicated by URLs. Your app can also use this API to perform background downloads when your app isn't running or, in iOS, while your app is suspended.
The URLSessionTask class is the base class for tasks in a URL session. Tasks are always part of a session; you create a task by calling one of the task creation methods on a URLSession instance. The method you call determines the type of task.
Swift 4 post example with json payload-
func postAction(_ sender: Any) { let Url = String(format: "your url") guard let serviceUrl = URL(string: Url) else { return } let parameterDictionary = ["username" : "Test", "password" : "123456"] 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() }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With