Подпишите запрос Http с помощью Retrofit2 - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь загрузить ресурс из службы, используя Retrofit2, следуя их руководству.Код находится в Kotlin, и сервис использует OAuth 1.0a.

interface DownloadManager {
    companion object {
        private val httpClient = OkHttpClient.Builder()
        private val builder = Retrofit.Builder()
            .baseUrl(RESOURCE_URL)
            .addConverterFactory(SimpleXmlConverterFactory.create())

        private var retrofit = builder.build()

        lateinit var client: DownloadManager

        fun createService(token: String) {
            if (!TextUtils.isEmpty(token)) {
                val interceptor = AuthenticationInterceptor(token)
                if (!httpClient.interceptors().contains(interceptor)) {
                    httpClient.addInterceptor(interceptor)
                }
                builder.client(httpClient.build())
                retrofit = builder.build()
            }

            client = retrofit.create(DownloadManager::class.java)
        }
    }

    @GET("/page.ashx")
    fun download(@Query("id") id: String): Call<Data>

}

internal class AuthenticationInterceptor(private val authToken: String): Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        val original = chain.request()

        val builder = original.newBuilder()
            .header("Authorization", authToken)

        val request = builder.build()
        return chain.proceed(request)
    }
}

Проблема в токене: что я должен пройти?Я могу загрузить следующий код с помощью Signpost, но не могу воспроизвести подписание запроса с помощью API-ключа и секретного ключа, а также токена и секретного доступа.

...