Kotlin中用于请求和响应主体okhttp的参数是什么

问题描述 投票:0回答:1

我开始使用okhttp3在Kotlin中编写应用程序代码。我得到响应正文,但如何获取所需的信息?例如,我使用Google example。我只想获取“名称:”。我怎样才能告诉我我的请求只有“ name:”?您可以提供有关OkHTTP的说明和示例的代码示例或源代码的帮助吗?我阅读了官方文档,但没有找到或只是不明白。

fun run(url: String){
        val request = Request.Builder().url(url).build()
        //client.authenticator()
        val client = OkHttpClient()
            .newBuilder()
            .addInterceptor { chain ->
                val originalRequest = chain.request()
                val builder = originalRequest
                    .newBuilder()
                val name = request.header("name")
                    //.header("Authorization",
                    //    Credentials.basic("login", "password"))
                val newRequest = builder.build()
                chain.proceed(newRequest)
            }.build()

client.newCall(request).enqueue(object : Callback{
            override fun onFailure(call: Call, e: IOException) {

                toast("fail")
                e.printStackTrace()
            }
            override fun onResponse(call: Call, response: Response) {

                textView3.setText(response.body()?.string())

            }
        })

我尝试使用.header("name"),但是它是红色的,我认为我犯了一些错误。谢谢你的建议

kotlin parameters okhttp
1个回答
0
投票

这里是使用Jackson ObjectMapper的一种方法

根据您的示例,假设您在响应中收到以下content

{
  "login": "defunkt",
  "id": 2,
  "name": "Chris Wanstrath",
  "company": null,
  "blog": "http://chriswanstrath.com/"
}

但是您只对name字段感兴趣,因此您定义了User类:

public class User { private String name; }

然后使用ObjectMapper配置为忽略缺少的属性:

// content = response.body().string();

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
try {
    User user = mapper.readValue(content, User.class);
    System.out.println(user.getName());    // Chris Wanstrath
} catch (JsonProcessingException e) {
    e.printStackTrace();
}
© www.soinside.com 2019 - 2024. All rights reserved.