SwiftでHTTPリクエストを送信するにはどうすればいいですか?質問する

SwiftでHTTPリクエストを送信するにはどうすればいいですか?質問する

私は読むプログラミング言語 SwiftApple の iBooks で HTTP リクエスト (cURL のようなもの) を Swift で作成する方法がわかりません。Obj-C クラスをインポートする必要がありますか、それともデフォルトのライブラリをインポートするだけでよいのでしょうか。それともネイティブの Swift コードに基づいて HTTP リクエストを作成することはできないのでしょうか。

ベストアンサー1

Objective-C で通常行うのと同じようにURLURLRequestURLSessionを使用できます。iOS 7.0 以降では、が推奨されることに注意してください。NSURLConnectionURLSession

使用URLSession

からURLオブジェクトとを初期化します。次に、を使用してタスクを実行します。URLSessionDataTaskURLSessionresume()

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

これにより、プレイグラウンドで非同期コードを使用できるようになります。

おすすめ記事