安卓基础(持续更新的笔记)

为什么要这样:

 // 创建请求体
        RequestBody body = RequestBody.create(
                MediaType.parse("application/json; charset=utf-8"),
                jsonObject.toString()
        );

jsonObject 就包含了一个 JSON 数据,它其实就是:

{
  "name": "张三",
  "age": 10
}

所以,jsonObject.toString() 会把我们的 JSON 数据转换成:

{"name":"张三","age":10}

什么是 client.newCall(request).enqueue()

client 是什么?

  • 你可以把 client 想象成一个邮递员。
  • 它负责接收信件(就是请求)并把信件送到目的地(比如服务器)。

request 是什么?

  • request 就是你要寄出的信,它包含了你想要发送的信息(比如:你想要从网站获取的数据)。
  • 你可以把 request 看作是装在信封里的信,信里写着你要做什么(比如:查天气,获取新闻等)。

newCall(request) 是什么意思?

  • 当你说 client.newCall(request) 时,你是在告诉邮递员:“嘿!这是我的信(请求),帮我寄出去!”

enqueue(new Callback() {...}) 是什么意思?

  • 这部分就是你告诉邮递员,“当信送到之后,告诉我一声!”就像你期待收信一样,你也期待邮递员处理完请求之后给你一个答复。

  • enqueue 是一个 "异步" 操作,意味着邮递员把信送出去后,他不会立刻等待回信,而是继续去做其他事情。等他收到回复时,他会 通知你,就像“嘿!你的信已经回来了,我有了答案!”

  • Callback 就是你给邮递员的一个回信地址,你告诉邮递员,“当有回复的时候,联系我”。当你收到答复时,邮递员就会通过 Callback 告诉你 答复内容

 public void onResponse(Call call, Response response) throws IOException
为什么要加一个 Call call 参数?
  1. 表示当前的请求: onResponse 是一个回调方法,它在网络请求成功后被调用。Call call 这个参数是告诉你当前的请求是什么,它是你发起的某个网络请求对象。这样,在回调中你可以通过 call 来获取有关请求的信息。

  2. 支持多次请求: 有时候,程序可能会发起多个请求。通过在 onResponse 中传递 call,你就能知道是哪个请求返回的结果。如果没有 call,你就不知道是哪个请求触发了回调。

String responseBody = response.body().string();

response.body().string(); 这行代码的意思是什么?

  • response: 这是你从网络请求得到的回应,它包含了很多信息,比如服务器返回的数据、状态码、头信息等。
  • body(): 这个方法可以用来获取服务器返回的数据内容。可以理解为,"body" 就是回应的内容
  • string(): 这个方法把回应的内容转换成字符串。因为服务器返回的数据通常是以二进制的方式存储的,我们需要把它转换成可读的文本(字符串)才能理解里面的内容。

举个简单的例子:

想象你给朋友发了一个包裹,这个包裹里有一些写着字的纸条,代表服务器给你的回应。

  • response.body() 就像是你打开包裹,拿到里面的纸条。
  • string() 就是你把纸条上的内容读出来,变成可以理解的文字。

你可能感兴趣的:(android,笔记,java)