ユーザ用ツール

サイト用ツール


kotlin:okhttp

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
kotlin:okhttp [2023/04/07 14:10] mikotokotlin:okhttp [2023/04/27 15:03] (現在) mikoto
行 23: 行 23:
 </code> </code>
  
 +===== ヘッダーの追加 =====
 +ヘッダーを追加するには''addHeader''メソッドを使用する。
 +<code>
 +val request = Request.Builder()
 +  .url("site_url")
 +  .addHeader("key", "val") // key と val を設定する
 +  .addHeader("Content-Type", "text/xml") // Content-Typeの設定の一例
 +  .build()
 +</code>
 ===== POSTメソッドの送信について ===== ===== POSTメソッドの送信について =====
 +POSTメソッドを用いてアクセスするには''post()''を使用する。
  
 +まずはリクエストボディーを作成し、それを指定してリクエストを作成する。
 +<code>
 +val request_body = "request"
 +val request = Request.Builder()
 +  .url(url)
 +  .post(request_body)
 +  .build()
 +
 +val response = OkHttpClient().newCall(request).execute()
 +</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リクエストのタイムアウト値を設定する =====
行 43: 行 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.1680844213.txt.gz · 最終更新: 2023/04/07 14:10 by mikoto