Плохой запрос OkHttp 400 на сервере Nginx - PullRequest
0 голосов
/ 14 февраля 2020

Я использую OkHttp в своем приложении Android, которое запрашивает ответ от Сервера, написанного на Spring Boot, который стоит за Nginx. Backend использует Oauth2, поэтому во время аутентификации мы должны нажать oauth/token конечную точку с username password grant_type, а также Basic Auth с именем пользователя и паролем. Если мы нажмем на API на Postman, он даст правильный ответ, но OkHttp вернет 400 Bad Request.

Это мой код

class BasicAuthInterceptor():Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        val request = chain.request()
        val credentials = Credentials.basic("username", "password")
        val authenticatedResutl = request.newBuilder().header("Authorization",credentials).build()
        return chain.proceed(authenticatedResutl)
    }

}

@Provides
    @Singleton
    fun provideOkhttp(
        tokenInterceptor: TokenInterceptor,
        tokenAutheticator: TokenAutheticator
    ): OkHttpClient {
        val logging = HttpLoggingInterceptor()
        logging.setLevel(HttpLoggingInterceptor.Level.BODY)

        val basicAuthInterceptor = BasicAuthInterceptor()
        val client = OkHttpClient.Builder()
            .authenticator(tokenAutheticator)
            .addInterceptor(logging)
            .addInterceptor(basicAuthInterceptor)
            .addInterceptor(tokenInterceptor)
            .build()


        return client
    }

А это лог

D/OkHttp: <-- 400 Bad Request https://myserver.com/api/v1/oauth/token (1434ms)
D/OkHttp: Server: nginx/1.17.8
D/OkHttp: Date: Fri, 14 Feb 2020 12:46:13 GMT
D/OkHttp: Content-Type: text/html
D/OkHttp: Content-Length: 157
D/OkHttp: Connection: close
D/OkHttp: <html>
D/OkHttp: <head><title>400 Bad Request</title></head>
D/OkHttp: <body>
D/OkHttp: <center><h1>400 Bad Request</h1></center>
D/OkHttp: <hr><center>nginx/1.17.8</center>
D/OkHttp: </body>
D/OkHttp: </html>
D/OkHttp: <-- END HTTP (157-byte body)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...