私は読むプログラミング言語 SwiftApple の iBooks で HTTP リクエスト (cURL のようなもの) を Swift で作成する方法がわかりません。Obj-C クラスをインポートする必要がありますか、それともデフォルトのライブラリをインポートするだけでよいのでしょうか。それともネイティブの Swift コードに基づいて HTTP リクエストを作成することはできないのでしょうか。
ベストアンサー1
Objective-C で通常行うのと同じようにURL
、URLRequest
やURLSession
を使用できます。iOS 7.0 以降では、が推奨されることに注意してください。NSURLConnection
URLSession
使用URLSession
からURL
オブジェクトとを初期化します。次に、を使用してタスクを実行します。URLSessionDataTask
URLSession
resume()
let url = URL(string: "http://www.stackoverflow.com")!
let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
guard let data = data else { return }
print(String(data: data, encoding: .utf8)!)
}
task.resume()
使用NSURLConnection
まず、 aURL
と a を初期化しますURLRequest
。
let url = URL(string: "http://www.stackoverflow.com")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
次に、次のようにしてリクエストを非同期に読み込むことができます。
NSURLConnection.sendAsynchronousRequest(request, queue: OperationQueue.main) {(response, data, error) in
guard let data = data else { return }
print(String(data: data, encoding: .utf8)!)
}
または、次のように初期化することもできますNSURLConnection
:
let connection = NSURLConnection(request: request, delegate:nil, startImmediately: true)
デリゲートを 以外に設定しnil
、デリゲート メソッドを使用して受信した応答とデータを処理してください。
詳細については、NSURLConnectionDataDelegate
プロトコルのドキュメント
Xcode プレイグラウンドでのテスト
このコードを Xcode プレイグラウンドで試したい場合は、import PlaygroundSupport
プレイグラウンドに次の呼び出しも追加します。
PlaygroundPage.current.needsIndefiniteExecution = true
これにより、プレイグラウンドで非同期コードを使用できるようになります。