I am trying to post a simple string, but I continuously getting the HTTP 415 Unsupported Media Type Error. I tried converting the parameter to JSON still it didn't work.
Method Updated
func requestUsingPostMethod(url: String, parameter: String, completion: @escaping (_ success: [String : AnyObject]) -> Void) {
//@escaping...If a closure is passed as an argument to a function and it is invoked after the function returns, the closure is @escaping.
var request = URLRequest(url: URL(string: url)!)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.httpMethod = "POST"
let postString = parameter
request.httpBody = try? JSONSerialization.data(withJSONObject: [postString])
// 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!)
return
}
let responseString = try! JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String : AnyObject]
completion(responseString)
}
task.resume()
}
Request
NetworkCall().requestUsingPostMethod(url: "http://192.168.50.119:8181/rest/items/wemo_lamp_switch", parameter: "ON", completion: { response in
print("--------------------------------------------------------------")
print(response)
// let jsonResults = JSON(String: response)
})
ERROR
statusCode should be 200, but is 415 { URL: http://192.168.50.119:8181/rest/items/wemo_lamp_switch } { status code: 415, headers { "Content-Length" = 282; "Content-Type" = "application/json"; Date = "Tue, 12 Sep 2017 08:33:16 GMT"; Server = "Jetty(9.2.19.v20160908)"; } }
I Updated the question with your answers but still getting the same error.
Postman Data
{
"id": "6f5d4f8a-612a-10f9-71b5-6dc8ba668885",
"name": "simpledata",
"description": "",
"order": [
"65df8736-1069-b0f0-3a1d-c318ce1810e0"
],
"folders": [],
"folders_order": [],
"timestamp": 1505208950131,
"owner": 0,
"public": false,
"requests": [
{
"id": "65df8736-1069-b0f0-3a1d-c318ce1810e0",
"headers": "",
"headerData": [],
"url": "http://192.168.50.119:8181/rest/items/wemo_lamp_switch",
"queryParams": [],
"pathVariables": {},
"pathVariableData": [],
"preRequestScript": null,
"method": "POST",
"collectionId": "6f5d4f8a-612a-10f9-71b5-6dc8ba668885",
"data": [],
"dataMode": "raw",
"name": "http://192.168.50.119:8181/rest/items/wemo_lamp_switch",
"description": "",
"descriptionFormat": "html",
"time": 1505208951279,
"version": 2,
"responses": [],
"tests": null,
"currentHelper": "normal",
"helperAttributes": {},
"rawModeData": "OFF"
}
]
}
Set your request's
Content-Type
header to whatever you expect your API to return. If you're sure that it returns aJSON
then