How to print console http request

Can I print an entire HTTP request before executing the actual request?

This is my code:

let postsEndpoint: String = "https://www.example.com/api/" guard let postsURL = NSURL(string: postsEndpoint) else { throw APICallError.other("cannot create URL") } let postsURLRequest = NSMutableURLRequest(URL: postsURL) postsURLRequest.HTTPMethod = "POST" print(UTF8EncodedJSON) postsURLRequest.HTTPBody = UTF8EncodedJSON print(postsURLRequest) let config = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: config) let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: { (data, response, error) in //handle response }) 

this first prints json in hexadecimal, and then:

<NSMutableURLRequest: 0x7fdae8d1dd30> { URL: https://www.ritzie.nl/api/v2 }

which doesn't help me much. I just want our entire request to be printed as you would see it in firebug on firefox, for example.

- edit -

To clarify, I am not trying to print my json. There are enough questions about this on SO already. I want my full query to print something like this:

 POST /api/v2/ HTTP/1.1 HTTP headers: Host: www.example.ocm Origin: http://www.example.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/\*;q=0.8 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9 Referer: http://www.ritzie.nl/api/test.php Accept-Language: en-us Accept-Encoding: gzip, deflate request body: data=%7B%22action%22%3A+%22vehicleRecords%22%2C%0D%0A%22token%22%3A+%22token_04e01fdc78205f0f6542bd523519e12fd3329ba9%22%2C%0D%0A%22vehicle%22%3A+%22vehicle_e5b79b2e%22%7D 

or that:

Firebug Request Screenshot

+9
swift
source share
3 answers

Print it in the completeHandler file:

 let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: { (data, response, error) in //handle response print(NSString(data: data.HTTPBody!, encoding:NSUTF8StringEncoding)!) }) 

if it does not work, use the following:

 print(NSString(data: data, encoding: NSUTF8StringEncoding)) 
+1
source

This works for me:

  let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: { (data, response, error) in if let _data = data { do { var jsonResult: NSDictionary try jsonResult = NSJSONSerialization.JSONObjectWithData(_data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary print("AsSynchronous\(jsonResult)") } catch { // handle error } } else { print("Error: no data for request \(urlPath)") } }) 
+1
source
 let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: { (data, response, error) in //handle response print(NSString(data: response.request, encoding:NSUTF8StringEncoding)!) }) 
-one
source

All Articles