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