2015-09-05 2 views
1

По какой-то причине мой код прерывается каждый раз, когда я пытаюсь выполнить запрос POST.HTTP-запрос в Swift Crashing

Мой код:

let request = NSMutableURLRequest(URL: NSURL(string: "https://url.info/")!); 
    request.HTTPMethod = "POST"; 
    let postString = "?appendedToURL"; 
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ 
     data, response, error in 
     if error != nil{ 
      println("error=\(error)"); 
      return; 
     } 
     println("response = \(response)"); 
     let responseString = NSString(data: data, encoding: NSUTF8StringEncoding); 
     println("responseString = \(responseString)"); 
    } 
    task.resume(); 

Я постоянно отправляется в отладчик от линии:
пусть задача = NSURLSession.sharedSession() dataTaskWithRequest (запрос)

Я не совсем. конечно, что я делаю неправильно здесь, любая помощь будет оценена по достоинству.

+0

проверка однажды ваш postString = "appendedToURL?"; правильно или нет –

ответ

1

Я попытался получить вышеуказанные запросы, но не смог получить никакого ответа. (Я использовал https://www.getpostman.com/)

Если вы хотите получить ответ, я рекомендую использовать https://httpbin.org/.

Это пример, который работает.

let request = NSMutableURLRequest(URL: NSURL(string: "http://httpbin.org/post")!) 
request.HTTPMethod = "POST" 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

let params: [String: AnyObject] = [ 
    "foo": "bar", 
    "baz": [ 
     "a": 1, 
     "b": 20, 
     "c": 300 
    ] 
] 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: nil) 

let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in 
    if error != nil{ 
     println("error=\(error)") 
     return 
    } 
    println("response = \(response)") 
    let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) 
    println("responseString = \(responseString)") 
} 

task.resume() 

Выход, как это,

response = <NSHTTPURLResponse: 0x7fa1e5002be0> { URL: http://httpbin.org/post } { status code: 200, headers { 
    "Access-Control-Allow-Credentials" = true; 
    "Access-Control-Allow-Origin" = "*"; 
    Connection = "keep-alive"; 
    "Content-Length" = 564; 
    "Content-Type" = "application/json"; 
    Date = "Sat, 05 Sep 2015 07:17:06 GMT"; 
    Server = nginx; 
} } 
responseString = Optional({ 
    "args": {}, 
    "data": "{\"baz\":{\"b\":20,\"a\":1,\"c\":300},\"foo\":\"bar\"}", 
    "files": {}, 
    "form": {}, 
    "headers": { 
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "en-us", 
    "Content-Length": "42", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "User-Agent": "SVSample/1 CFNetwork/711.4.6 Darwin/14.5.0" 
    }, 
    "json": { 
    "baz": { 
     "a": 1, 
     "b": 20, 
     "c": 300 
    }, 
    "foo": "bar" 
    }, 
    "origin": "118.151.1.242", 
    "url": "http://httpbin.org/post" 
} 
)