1

I am sending login information to the server that I built using ASP.NET Core. I tested my server via PostMan and Fiddler and it returns a valid response.

Here is my post request:

   var request = URLRequest(url: URL(string:     "http://adincebic.com/auth/login")!)
    request.httpMethod = "POST"
    let postString = "email=cebic.ad@gmail.com&password=a"
    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=\(String(describing: 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 = \(String(describing: response))")
        }

        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(String(describing: responseString))")
    }
    task.resume()

I tried using dictionary like ["email":"myEmail","password":"myPass"] but it did not let me do it that way. I also tried using Alamofire but again with no luck, the server always returns 415 error in the console.

To verify that my server works I created a UWP application to test it and it worked as expected.

Here is my server response in XCode:

   statusCode should be 200, but is 415
   response = Optional(<NSHTTPURLResponse: 0x6080002275a0> { URL:        http://adincebic.com/auth/login } { status code: 415, headers {
Connection = "keep-alive";
"Content-Length" = 0;
Date = "Thu, 08 Jun 2017 12:16:12 GMT";
Server = "nginx/1.10.1 (Ubuntu)";
} })
responseString = Optional("")

I am assuming that it may be a problem with encoding or a problem with reading data.

I wrote this post requests as described in this answer: HTTP Request in Swift with POST method

Adin Ljudina
  • 185
  • 2
  • 5
  • 15

1 Answers1

2

Maybe you are missing the Content-Type header, like this:

request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
sgerved
  • 21
  • 2
  • 3