我开始使用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")
,但是它是红色的,我认为我犯了一些错误。谢谢你的建议
这里是使用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();
}