2015-03-26 3 views
1

Любая идея, почему sendSynchronousRequest не работает, и возвращает нуль. Ошибка и ответ тоже нуль.NSURLConnection sendSynchronousRequest не работает

let url = NSURL(fileURLWithPath: "http://google.com")! 
let ur = NSMutableURLRequest(URL: url) 
let response: AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil 
let errorPtr = NSErrorPointer() 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
    let data = NSURLConnection.sendSynchronousRequest(ur, returningResponse: response, error: errorPtr) 
    if errorPtr != nil { 
     var error: NSError = errorPtr.memory! 
    } 
}) 

UPDATE

Я пытался в асинхронном образом:

var oq = NSOperationQueue() 
NSURLConnection.sendAsynchronousRequest(ur, queue: oq, completionHandler: {response, data, error in 

    let ii = 7 
}) 

Здесь я получаю сообщение об ошибке:

(lldb) po error Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server." UserInfo=0x1567f9d0 {NSErrorFailingURLStringKey=file:///http:/google.com, NSErrorFailingURLKey=file:///http:/google.com, NSLocalizedDescription=The requested URL was not found on this server., NSUnderlyingError=0x15691880 "The requested URL was not found on this server."}

Странная Google не доступен?

+1

Почему использовать 'sendSynchronousRequest 'в' dispatch_async', когда вы можете легко использовать 'sendAsynchronousRequest:'? – zaph

+0

Определить «не работает». Нет запросов 'println()' отладки, вы поставили точку останова после вызова 'sendSynchronousRequest' и проверили результаты? – zaph

+0

При написании кода, и он не работает, лучший подход состоит в том, чтобы предположить, что это код, который только что написал, а не система. Это работало хорошо для меня в течение нескольких десятилетий. Также, как правило, чтение сообщений об ошибках обычно обеспечивает хорошую информацию, в этом случае: «NSErrorFailingURLKey = file: /// http: /google.com» находится на месте. – zaph

ответ

3

Вы используете fileURLWithPath и возвращает URL файла: ///private/var/folders/xs/6k9v2g217155wr9vgb3xrg_80000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt. playground.stub.iOS_Simulator.MyPlayground-F81D60A5-6797-4BEB-8AB9-2D156E2B6771/HTTP: /google.com

что вам нужно let url = NSURL(string: "http://google.com")! и возвращает URL:
http://google.com

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