Shadow
Shadow

Reputation: 47

Error in POST Request in swift

I wanted to be a type of variable to send to the dictionary server but But on the line I was faced with the problem let task = session.dataTaskWithRequest(todosUrlRequest) error : Cannot convert value of type 'NSURL' to expected argument type 'NSURLRequest'

I had two questions

1) What is this error?

2)Is there a procedure that I used for POST is that right? doesn't need anything else. ?? thank you for help

func data_request (){

            let url = "http://sample.com/api/Flight/GetTicketInformation"
            guard let todosUrlRequest = NSURL(string: url) else {
                print("Error: cannot create URL")
                return
            }

            let request = NSMutableURLRequest(URL: todosUrlRequest)
            request.HTTPMethod = "POST"
            request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData

            let newTodo = ["Roundtrip": roundTrip,
                           "OneWay": oneWay,
                           "MultiWay": multiWay,
                           "Adult": numberAdults,
                           "Child": numberchild,
                           "Baby": numberinfant,
                           "SourceCityId": cityIDOrigin,
                           "DestinationCityId": cityIDPurpose,
                           "DepartingDate": raftDate,
                           "ReturningDate": bargashtDate ]
            let jsonTodo: NSData
            do {
                jsonTodo = try NSJSONSerialization.dataWithJSONObject(newTodo, options: [])
                request.HTTPBody = jsonTodo

            } catch {
                print("Error: cannot create JSON from todo")
                return
            }
            request.HTTPBody = jsonTodo

            let config = NSURLSessionConfiguration.defaultSessionConfiguration()
            let session = NSURLSession(configuration: config)

            let task = session.dataTaskWithRequest(todosUrlRequest) {
                (data, response, error) in

                guard let responseData = data else {
                    print("Error: did not receive data")
                    return
                }
                guard error == nil else {
                    print("error calling POST on /todos/1")
                    print(error)
                    return
                }

                // parse the result as JSON, since that's what the API provides
                do {
                    guard let receivedTodo = try NSJSONSerialization.JSONObjectWithData(responseData,
                                                                                        options: []) as? [String: AnyObject] else {
                                                                                            print("Could not get JSON from responseData as dictionary")
                                                                                            return
                    }
                    print("The todo is: " + receivedTodo.description)


                } catch  {
                    print("error parsing response from POST on /todos")
                    return
                }
            }
            task.resume()
        }

Upvotes: 0

Views: 132

Answers (2)

turushan
turushan

Reputation: 720

I can recommend you Alamofire for all requests, instead of writing all code on your own. https://github.com/Alamofire/Alamofire

Upvotes: 0

phantom
phantom

Reputation: 112

request instead of todosUrlRequest on the line let task = session.dataTaskWithRequest(todosUrlRequest)

for the second question, no idea . sorry

Upvotes: 2

Related Questions