Skip to content

マルチプラットフォーム

コード例: client-mpp

Ktor HTTPクライアントマルチプラットフォームプロジェクトで使用でき、以下のプラットフォームをサポートしています:

依存関係の追加

プロジェクトでKtor HTTPクライアントを使用するには、少なくとも2つの依存関係を追加する必要があります:クライアントの依存関係とエンジンの依存関係です。マルチプラットフォームプロジェクトの場合、これらの依存関係を以下のように追加します:

  1. 共通コードでKtorクライアントを使用するには、build.gradleまたはbuild.gradle.ktsファイルのcommonMainソースセットにktor-client-coreへの依存関係を追加します:

    Kotlin
    Groovy
  2. 必要なプラットフォームのエンジンの依存関係を、対応するソースセットに追加します。Androidの場合、Androidエンジンへの依存関係をandroidMainソースセットに追加できます:

    Kotlin
    Groovy

    iOSの場合、iosMainDarwinエンジンの依存関係を追加する必要があります:

    Kotlin
    Groovy

    各プラットフォームでサポートされているエンジンを確認するには、エンジンの依存関係を追加するを参照してください。

クライアントの作成

マルチプラットフォームプロジェクトでクライアントを作成するには、プロジェクトの共通コードHttpClientコンストラクタを呼び出します:

kotlin
import io.ktor.client.*

val client = HttpClient()

このコードスニペットでは、HttpClientコンストラクタはパラメータとしてエンジンを受け取りません。クライアントは、ビルドスクリプトで追加されたアーティファクトに応じて、必要なプラットフォーム用のエンジンを選択します。

特定のプラットフォーム用にエンジン構成を調整する必要がある場合は、対応するエンジンクラスをHttpClientコンストラクタの引数として渡し、engineメソッドを使用してエンジンを構成します。例:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.android.*
import java.net.Proxy
import java.net.InetSocketAddress

val client = HttpClient(Android) {
    engine {
        // this: AndroidEngineConfig
        connectTimeout = 100_000
        socketTimeout = 100_000
        proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("localhost", 8080))
    }
}

すべてのエンジンタイプの構成方法については、クライアントエンジンから確認できます。

コード例

mpp/client-mppプロジェクトは、マルチプラットフォームアプリケーションでKtorクライアントを使用する方法を示しています。このアプリケーションは、AndroidiOSJavaScript、およびmacosX64の各プラットフォームで動作します。