2016-01-10 2 views
8

Возможно ли распечатать весь http (-ы) запрос непосредственно перед выполнением фактического запроса?Как распечатать http-запрос на консоль

Это мой код:

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 
}) 

это печатает JSON в шестнадцатеричном, а затем:

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

, который не помогает мне много. Я просто хочу, чтобы весь наш запрос был напечатан, например, вы увидите его в firebug на firefox, например.

--edit--

Чтобы уточнить, я не пытаюсь напечатать мой JSON. На этом уже достаточно вопросов об этом. Я хочу, чтобы мой полный запрос распечатывается что-то вроде этого:

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 

или это:

Firebug request screenshot

+0

Если вы хотите, чтобы увидеть текст JSON, что нужно, чтобы создать строку из данных все – Wain

+0

@Wain, лол нет, я хочу, чтобы увидеть все мое http-запрос. Как это: 'GET/API/v2/HTTP/1.1 HTTP заголовки: Ведущий: www.ritzie.nl Accept: */* Cookie: PHPSESSID = vd61qutdll216hbs3a677fgsq4 User-Agent: KM% 20registratie% 20tabbed% 20NL/1 CFNetwork/758.2.8 Darwin/15.2.0 Accept-Language: EN-US Accept-Encoding: GZIP, выкачать Connection: Keep-alive' – Fr4nc3sc0NL

+0

так что вам нужно печатать заголовки сами – Wain

ответ

0

печати его внутри completionHandler:

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

, если он не работает, то используйте следующее:

print(NSString(data: data, encoding: NSUTF8StringEncoding)) 
+0

вы печатаете тело ответа, я хочу весь запрос – Fr4nc3sc0NL

1

Это один работает для меня:

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
let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: { 
    (data, response, error) in 
    //handle response 
    print(NSString(data: response.request, encoding:NSUTF8StringEncoding)!) 
}) 
+0

В объекте ответа нет свойства запроса. – Nate

Смежные вопросы