2014-12-05 2 views
0

я использую следующую функцию в Swift для подключения к PHP скрипт на сервере, а затем обработать мой запрос:Swift: Получить HTTP код из ответов сервера

func pushtoserveronclick() { 
    var URL: NSURL = NSURL(string: "http://someurl.com/")! 
    var request:NSMutableURLRequest = NSMutableURLRequest(URL:URL) 
    request.HTTPMethod = "POST" 
    var bodyData = "data=something&version=\(appVersion)" 
    request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding); 
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
     { 
      (response, data, error) in      
      println(response)     
    } 
} 

Когда я запустить приложение я получаю это возвращается в качестве ответа:

<NSHTTPURLResponse: 0x14e53170> { URL: http://someurl.com/ } { status code: 200, headers { 
Connection = "Keep-Alive"; 
"Content-Type" = "text/html"; 
Date = "Fri, 05 Dec 2014 06:23:23 GMT"; 
"Keep-Alive" = "timeout=2, max=100"; 
Server = Apache; 
"Transfer-Encoding" = Identity; 

Как бы я получить код статус, который возвращается, так что я могу выполнить проверку на нем и сказать, является ли это или нет проблема подключения?

+0

response.statusCode – mattt

+0

@mattt Уже пробовал. Я получаю 'NSURLResponse' не имеет члена с именем 'statusCode' – DannieCoderBoi

+0

Сначала передайте его в 'NSHTTPURLResponse'. '[(NSHTTPURLResponse *) response statusCode]' – mattt

ответ

2

NSURLConnection.sendAsynchronousRequest использует NSURLResponse в сигнатуре типа, но до тех пор, пока вы подключены через HTTP, экземпляр (обычно) NSHTTPURLResponse, который имеет statusCode.

Вы можете проверить и бросить его так:

if let HTTPResponse = response as? NSHTTPURLResponse { 
    let statusCode = HTTPResponse.statusCode 
} 
Смежные вопросы