Skip to content

Latest commit

 

History

History
122 lines (85 loc) · 3.88 KB

http_stack.md

File metadata and controls

122 lines (85 loc) · 3.88 KB

HttpStack

Translations: 简体中文

HttpStack is used to initiate HTTP network requests and obtain responses, then hand them over to HttpUriFetcher to download images.

On the jvm platform, Sketch provides two implementations HurlStack and OkHttpStack. HurlStack is used by default. OkHttpStack requires additional dependence on the sketch-http-okhttp module.

On non-jvm platforms, Sketch only provides KtorStack implementation, and KtorStack is used by default.

You can also use KtorStack on the jvm platform, which requires additional dependency on the sketch-http-ktor module

HurlStack

HurlStack is implemented using HttpURLConnection and supports the following configurations:

class MyApplication : Application(), SingletonSketch.Factory {

    override fun createSketch(): Sketch {
        return Sketch.Builder(context).apply {
            httpStack(HurlStack.Builder().apply {
                // Connection timed out. Default 7000
                connectTimeout(Int)

                // Read timeout. Default 7000
                readTimeout(Int)

                // User-Agent. Default null
                userAgent(String)

                // Add some non-repeatable headers. Default null
                extraHeaders(Map<String, String>)

                // Add some repeatable headers. Default null
                addExtraHeaders(Map<String, String>)

                // HttpURLConnection is handled by this method before executing connect. Default null
                processRequest { url: String, connection: HttpURLConnection ->

                }
            }.build())
        }.build()
    }
}

OkHttpStack

Before using OkHttpStack, you need to rely on the sketch-http-okhttp module, and then pass httpStack() when initializing Sketch The method to register is as follows:

class MyApplication : Application(), SingletonSketch.Factory {

    override fun createSketch(): Sketch {
        return Sketch.Builder(context).apply {
            httpStack(OkHttpStack.Builder().apply {
                // Connection timed out. Default 7000
                connectTimeout(Int)

                // Read timeout. Default 7000
                readTimeout(Int)

                // User-Agent. Default null
                userAgent(String)

                // Add some non-repeatable headers. Default null
                extraHeaders(Map<String, String>)

                // Add some repeatable headers. Default null
                addExtraHeaders(Map<String, String>)

                // Interceptor. Default null
                interceptors(Interceptor)

                // Network blocker. Default null
                networkInterceptors(Interceptor)
            }.build())
        }.build()
    }
}

KtorStack

Before using KtorStack on the jvm platform, you need to rely on the sketch-http-ktor module, and then initialize Sketch You can register through the httpStack() method, as follows:

Sketch.Builder(context).apply {
    httpStack(KtorStack())
}.build()

Customize

First implement the HttpStack interface to define your own HttpStack, and then register it through the httpStack() method when initializing Sketch:

Sketch.Builder(context).apply {
    httpStack(MyHttpStack())
}.build()