私はポート3000でローカルに実行しているサーバーに対してNSURLSession
を使用してSwift 2.2で単純なAPIクライアントを作成しようとしています。サーバーは静的な文字列JSONのSwift NSURLSessionローカルサーバーへのリクエスト - 送受信されたデータなし
これは正常に動作します:APIをヒットする
$ curl http://localhost:3000
{"data":"value"}
マイスウィフトコードは次のとおりです。
// api_client.swift
let url = NSURL(string: "http://localhost:3000/api")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print("The response was:")
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
}
print("Running the request...")
task.resume()
私は、コマンドライン
$ swift api_client.swift
Running the request...
からそれを実行しようとしています。しかしそれはすべて起こります。私は、 "応答は"行が印刷されて表示されない、またはサーバーからの応答。サーバーのログをチェックすると、要求がまったく入力されなかったことがわかります。
私は間違っていますか?私はSwiftにはとても新しいので、これを理解するのに問題があります。私はSwift 2.2とXCode 7.3を使っています。
私の推測では、このメソッドは非同期であり、メソッドが実行を終了する前にランタイムがコードの終わりに到達しているので、補完は呼び出されません。 – pbush25
@ pbush25だから私はこれをテストし、それを修正することができますか?このようなコードを実行するにはどうすればよいでしょうか?私はまだこの作品を稼働させるために、まだ完全なiOSアプリを作りたいとは思っていません(それは最終的に目標です)。 – akowalz
このコードをコマンドラインから*実行すると、この場合アプリケーションには実行ループがないため、*動作しません。これを見てください:http://stackoverflow.com/questions/30702387/using-nsurlsession-from-a-swift-command-line-program – Moritz