如何在 android 应用程序上使用 kotlin 发送具有基本身份验证的 POST
How to send a POST with basic auth using kotlin on an android app
首先,我想提一下,我可以使用任何有助于加快或简化流程的库。
我需要向端点 (http://myserver.com/api/data/save
) 发送 post 请求。
正文必须是具有以下结构的 json:
{
"id": "ABCDE1234",
"date": "2021-05-05",
"name": "Jason"
}
所以,我需要提出一个 post 请求。端点需要身份验证,因此我需要合并用户名和密码。我在哪里以及如何添加它们?
此致
Where and how do I add them?
有多种方法可以将您的身份验证详细信息添加到任何 API 请求中。假设您使用 Retrofit 2, one of the ideal ways to implement this is using OkHttp Interceptors.
您需要 class 实现 Interceptor
class AuthInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
// Add auth details here
if (request.header("Authentication-required") != null) {
request = request.newBuilder()
.addHeader("username", "username value")
.addHeader("password", "password value")
.build()
}
return chain.proceed(request)
}
}
在您的 API 界面中,将 header 添加到需要身份验证的相应 API
@Headers("Authentication-required")
@POST("/save")
fun doSave(@Body data: PostData): Call<Status>
最后,使用 OkHttpClient 作为
构建您的改造客户端
val authClient = OkHttpClient.Builder()
.addInterceptor(AuthInterceptor())
.build()
val retrofit = Retrofit.Builder()
.baseUrl(your_base_url)
.client(authClient)
.build()
首先,我想提一下,我可以使用任何有助于加快或简化流程的库。
我需要向端点 (http://myserver.com/api/data/save
) 发送 post 请求。
正文必须是具有以下结构的 json:
{
"id": "ABCDE1234",
"date": "2021-05-05",
"name": "Jason"
}
所以,我需要提出一个 post 请求。端点需要身份验证,因此我需要合并用户名和密码。我在哪里以及如何添加它们?
此致
Where and how do I add them?
有多种方法可以将您的身份验证详细信息添加到任何 API 请求中。假设您使用 Retrofit 2, one of the ideal ways to implement this is using OkHttp Interceptors.
您需要 class 实现 Interceptor
class AuthInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
// Add auth details here
if (request.header("Authentication-required") != null) {
request = request.newBuilder()
.addHeader("username", "username value")
.addHeader("password", "password value")
.build()
}
return chain.proceed(request)
}
}
在您的 API 界面中,将 header 添加到需要身份验证的相应 API
@Headers("Authentication-required")
@POST("/save")
fun doSave(@Body data: PostData): Call<Status>
最后,使用 OkHttpClient 作为
构建您的改造客户端val authClient = OkHttpClient.Builder()
.addInterceptor(AuthInterceptor())
.build()
val retrofit = Retrofit.Builder()
.baseUrl(your_base_url)
.client(authClient)
.build()