1. ホーム
  2. ios

[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?

2022-03-23 23:33:43

質問

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

どのように解決するのですか?

を使用することができます。 URL , URLRequestURLSession または NSURLConnection は、Objective-Cで通常行うのと同じです。なお、iOS 7.0以降では 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

まず URLURLRequest :

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

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