gpt4 book ai didi

android - 如何在 Kotlin 中获取 Retrofit 的原始 json 响应?

转载 作者:行者123 更新时间:2023-12-02 12:31:14 25 4
gpt4 key购买 nike

我是 Kotlin 的新手和 Retrofit .我想调用基地URL通过Retrofit并打印原始 JSON回复。什么是最简单的最小配置?
比方说,

base url = "https://devapis.gov/services/argonaut/v0/" 
method = "GET"
resource = "Patient"
param = "id"
我试过了,
val patientInfoUrl = "https://devapis.gov/services/argonaut/v0/"

val infoInterceptor = Interceptor { chain ->
val newUrl = chain.request().url()
.newBuilder()
.query(accountId)
.build()

val newRequest = chain.request()
.newBuilder()
.url(newUrl)
.header("Authorization",accountInfo.tokenType + " " + accountInfo.accessToken)
.header("Accept", "application/json")
.build()

chain.proceed(newRequest)
}

val infoClient = OkHttpClient().newBuilder()
.addInterceptor(infoInterceptor)
.build()

val retrofit = Retrofit.Builder()
.baseUrl(patientInfoUrl)
.client(infoClient)
.addConverterFactory(GsonConverterFactory.create())
.build()

Logger.i(TAG, "Calling retrofit.create")
try {
// How to get json data here
}catch (e: Exception){
Logger.e(TAG, "Error", e);
}
Logger.i(TAG, "Finished retrofit.create")

}
我怎样才能得到原始的 json 输出。如果可能的话,我不想实现用户数据类和解析东西。有什么办法吗?
更新 1
标记为重复的帖子 ( Get raw HTTP response with Retrofit) 不适用于 Kotlin,我需要 Kotlin 版本。

最佳答案

你只需要让你的网络调用像这样运行就很容易了。

@FormUrlEncoded
@POST("Your URL")
fun myNetworkCall() : Call<ResponseBody>

这里的重点是您的网络调用应该返回一个 Call类型 ResponseBody .来自 ResponseBody你可以得到字符串格式的响应。

现在,当您调用此函数来执行网络调用时,您将获得原始字符串响应。
    MyApi().myNetworkCall().enqueue(object: Callback<ResponseBody>{
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
//handle error here
}

override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
//your raw string response
val stringResponse = response.body()?.string()
}

})

它很简单。如果您需要任何其他详细信息,请告诉我。希望这可以帮助。谢谢你

关于android - 如何在 Kotlin 中获取 Retrofit 的原始 json 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com