kotlin:okhttp
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| kotlin:okhttp [2023/04/07 14:09] – 作成 mikoto | kotlin:okhttp [2023/04/27 15:03] (現在) – mikoto | ||
|---|---|---|---|
| 行 20: | 行 20: | ||
| OkHttpClient().newCall(request).execute().use { response -> | OkHttpClient().newCall(request).execute().use { response -> | ||
| if (!response.isSuccessful) throw RuntimeException() // <- これはエラーハンドリング | if (!response.isSuccessful) throw RuntimeException() // <- これはエラーハンドリング | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== ヘッダーの追加 ===== | ||
| + | ヘッダーを追加するには'' | ||
| + | < | ||
| + | val request = Request.Builder() | ||
| + | .url(" | ||
| + | .addHeader(" | ||
| + | .addHeader(" | ||
| + | .build() | ||
| + | </ | ||
| + | ===== POSTメソッドの送信について ===== | ||
| + | POSTメソッドを用いてアクセスするには'' | ||
| + | |||
| + | まずはリクエストボディーを作成し、それを指定してリクエストを作成する。 | ||
| + | < | ||
| + | val request_body = " | ||
| + | val request = Request.Builder() | ||
| + | .url(url) | ||
| + | .post(request_body) | ||
| + | .build() | ||
| + | |||
| + | val response = OkHttpClient().newCall(request).execute() | ||
| + | </ | ||
| + | |||
| + | ==== XMLを送信する方法 ==== | ||
| + | <code kotlin> | ||
| + | import okhttp3.MediaType.Companion.toMediaType | ||
| + | import okhttp3.OkHttpClient | ||
| + | import okhttp3.Request | ||
| + | import okhttp3.RequestBody.Companion.toRequestBody | ||
| + | |||
| + | fun function() { | ||
| + | val xml = """ | ||
| + | <?xml version=" | ||
| + | <aaa> | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | """ | ||
| + | | ||
| + | val media_type = " | ||
| + | val request_body = xml.toRequestBody(media_type) | ||
| + | val request = Request.Builder() | ||
| + | .url(url) | ||
| + | .post(request_body) | ||
| + | .build() | ||
| + | | ||
| + | val response = OkHttpClient().newCall(request).execute() | ||
| + | // 後続処理 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== テキスト形式のリクエストボディーを作成する場合 ==== | ||
| + | <code kotlin> | ||
| + | import okhttp3.MediaType.Companion.toMediaType | ||
| + | import okhttp3.OkHttpClient | ||
| + | import okhttp3.Request | ||
| + | import okhttp3.RequestBody.Companion.toRequestBody | ||
| + | |||
| + | fun func() { | ||
| + | val text = "This is a sample." | ||
| + | val media_type = " | ||
| + | val request_body = text.toRequestBody(media_type) | ||
| + | val request = Request.Builder() | ||
| + | .url(url) | ||
| + | .post(request_body) | ||
| + | .build() | ||
| + | | ||
| + | val response = OkHttpClient().newCall(request).execute() | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== JSON形式のリクエストボディーを作成する場合 ==== | ||
| + | <code kotlin> | ||
| + | import okhttp3.MediaType.Companion.toMediaType | ||
| + | import okhttp3.OkHttpClient | ||
| + | import okhttp3.Request | ||
| + | import okhttp3.RequestBody.Companion.toRequestBody | ||
| + | |||
| + | fun func() { | ||
| + | val media_type = " | ||
| + | val json = " | ||
| + | val request_body = json.toRequestBody(media_type) | ||
| + | val request = Request.Builder() | ||
| + | .url(url) | ||
| + | .post(request_body) | ||
| + | .build() | ||
| + | |||
| + | val response = OkHttpClient().newCall(request).execute() | ||
| } | } | ||
| </ | </ | ||
| 行 40: | 行 131: | ||
| call.timeout().timeout(60, | call.timeout().timeout(60, | ||
| val response = call.execute() | val response = call.execute() | ||
| + | </ | ||
| + | |||
| + | ===== エラー処理 ===== | ||
| + | ==== レスポンスボディーがnullの場合の処理 ==== | ||
| + | <code kotlin> | ||
| + | val response = client.newCall(request).execute() | ||
| + | val responseBody = response? | ||
| + | |||
| + | if (response.isSuccessful && responseBody != null) { | ||
| + | // レスポンスボディを処理する | ||
| + | } else { | ||
| + | // エラー処理 | ||
| + | } | ||
| </ | </ | ||
kotlin/okhttp.1680844177.txt.gz · 最終更新: 2023/04/07 14:09 by mikoto