問題: 我正在使用 api,當我使用郵遞員執行 GET 請求時,作業完美,我得到了預期的回應。但是,當我在瀏覽器和 Android Studio 中測驗相同的 get 請求時,它不起作用。
郵遞員片段:
https://i.stack.imgur.com/b2eeS.png
郵遞員標題:
內容型別:應用程式/json
用戶:Dermacycle2018
密碼:(它是一個大密碼)
設備:iPhone7
版本SO:IOS 11.2.2
版本APP:1.0.1
Postman-Token:發送請求時計算
主機:請求發送時計算
用戶代理:PostmanRuntime/7.28.2
接受:/
接受編碼:gzip,deflate,br
連接:保持連接
瀏覽器片段:
https://i.stack.imgur.com/6KjpW.png
安卓代碼:
在這里我使用改造來處理回應
interface DermaCycleApiClient {
@GET
suspend fun getTratamientosFaciales(@Url url:String)
:Response<TratamientosFacialesResponse>
}
fun getRetrofit():Retrofit{
return Retrofit.Builder().
baseUrl("http://dermaservice.theappmaster.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
}
suspend fun getTratamientosFaciales(tf:String):TratamientosFacialesResponse{
return withContext(Dispatchers.IO){
val response = retrofit.create(DermaCycleApiClient::class.java).
getTratamientosFaciales("http://dermaservice.theappmaster.com/Tratamiento.ashx?Tipo=TF")
response.body()!!
}
}
uj5u.com熱心網友回復:
我相信您的 HTTP 請求需要幾個 Headers 資訊,從您的郵遞員資料中可以看出。似乎,您需要在 Android 專案的 HTTP 客戶端標頭中添加 5 個標頭值
用戶:Dermacycle2018
密碼:(大密碼)
設備:Iphone7
版本SO
:IOS 11.2.2
版本APP :1.0.1
您可以OkHttpClient使用攔截器將其添加到構建器中。
class HeaderInterceptor: Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val newRequest = chain.request().newBuilder()
.addHeader("User", "Dermacycle2018")
.addHeader("Password", ENCRYPTED_PASSWORD)
.addHeader("Device", DEVICE_NAME)
.addHeader("VersionSO", OS_VERSION)
.addHeader("VersionAPP", "1.0.1")
return chain.proceed(newRequest.build())
}
}
然后在您的OkHttpClient構建器中添加攔截器
val okHttpClient = OkHttpClient().newBuilder()
.addInterceptor(commonHeader)
.build
然后添加okHttpClient您的改造構建器
fun getRetrofit(): Retrofit {
val okHttpClient = OkHttpClient().newBuilder()
.addInterceptor(commonHeader)
.build
return Retrofit.Builder()
.baseUrl("http://dermaservice.theappmaster.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335681.html
