webViewではGetリクエストを行うだけではなく、POSTリクエストを行なってサーバー側に様々な情報を送信することができます。
guard let url = URL.init(string: "https://www.google.com/?hl=ja") else { return }
let request: URLRequest = URLRequest.init(url: url)
webView.load(request)
guard let url = URL.init(string: "https://www.google.com/?hl=ja") else { return }
var request: URLRequest = URLRequest.init(url: url)
request.httpMethod = "POST"
let httpBody = "test1=test&test2=test"
request.httpBody = httpBody.data(using: .utf8)
webView.load(request)
以降の記載は上記コードに対する説明になります。
リクエスト設定
URL型の変数を引数に渡してURLRequestを生成します。
URL型を生成する際はオプショナル型で返却される為、強制アンラップは行わないようにしましょう。
キャッシュポリシーやタイムアウトのデフォルト設定を変更したい場合は以下のメソッドを使用しましょう。
URLRequest.init(url: ~, cachePolicy: ~, timeoutInterval: ~)
指定しない場合のデフォルト設定は以下の設定値になります
キャッシュポリシー:useProtocolCachePolicy (プロトコルの規約に従い、キャッシュを使用する)
タイムアウト:60秒
HTTPメソッドの設定
Get:デフォルト設定となる為、設定不要
POST:String型で「POST」と設定する
クエリーの設定
▼GETリクエスト
GETリクエストは基本的にBody部を持たない為、クエリーはURLに付与する必要があります。
URLの末尾に
?test1=test&test2=test
のような形式で文字列を結合しましょう。
▼POSTリクエスト
URLRequestのhttpBodyプロパティに「&」で繋げた文字列をエンコードしてバイナリ化させたものを設定します。
リクエストの送信
WKWebViewのloadメソッドを使用して作成したRequestを設定することで送信することができます。