ユーザ用ツール

サイト用ツール


kotlin:okhttp

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
kotlin:okhttp [2023/04/07 14:23] – [POSTメソッドの送信について] mikotokotlin:okhttp [2023/04/27 15:03] (現在) mikoto
行 45: 行 45:
 val response = OkHttpClient().newCall(request).execute() val response = OkHttpClient().newCall(request).execute()
 </code> </code>
 +
 +==== 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="1.0" encoding="UTF-8"?>
 +    <aaa>
 +      <bbb>val1</bbb>
 +      <ccc>val2</ccc>
 +    </aaa>
 +  """.trimIndent()
 +  
 +  val media_type = "application/xml".toMediaTypeOrNull()
 +  val request_body = xml.toRequestBody(media_type)
 +  val request = Request.Builder()
 +    .url(url)
 +    .post(request_body)
 +    .build()
 +    
 +  val response = OkHttpClient().newCall(request).execute()
 +  // 後続処理
 +}
 +</code>
 +
 +==== テキスト形式のリクエストボディーを作成する場合 ====
 +<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 = "text/plain".toMediaTypeOrNull()
 +  val request_body = text.toRequestBody(media_type)
 +  val request = Request.Builder()
 +    .url(url)
 +    .post(request_body)
 +    .build()
 +  
 +  val response = OkHttpClient().newCall(request).execute()
 +}
 +</code>
 +
 +==== JSON形式のリクエストボディーを作成する場合 ====
 +<code kotlin>
 +import okhttp3.MediaType.Companion.toMediaType
 +import okhttp3.OkHttpClient
 +import okhttp3.Request
 +import okhttp3.RequestBody.Companion.toRequestBody
 +
 +fun func() {
 +  val media_type = "application/json; charset=utf-8".toMediaType()
 +  val json = "{\"user\":\"NK\",\"text\":\"Hello\"}"
 +  val request_body = json.toRequestBody(media_type)
 +  val request = Request.Builder()
 +    .url(url)
 +    .post(request_body)
 +    .build()
 +
 +  val response = OkHttpClient().newCall(request).execute()
 +}
 +</code>
 +
 ===== HTTPリクエストのタイムアウト値を設定する ===== ===== HTTPリクエストのタイムアウト値を設定する =====
 Call インターフェースの''timeout''メソッドを使用する。 Call インターフェースの''timeout''メソッドを使用する。
行 62: 行 131:
 call.timeout().timeout(60, TimeUnit.SECONDS) call.timeout().timeout(60, TimeUnit.SECONDS)
 val response = call.execute() val response = call.execute()
 +</code>
 +
 +===== エラー処理 =====
 +==== レスポンスボディーがnullの場合の処理 ====
 +<code kotlin>
 +val response = client.newCall(request).execute()
 +val responseBody = response?.body?.string()
 +
 +if (response.isSuccessful && responseBody != null) {
 +    // レスポンスボディを処理する
 +} else {
 +    // エラー処理
 +}
 </code> </code>
kotlin/okhttp.1680844985.txt.gz · 最終更新: 2023/04/07 14:23 by mikoto