通俗易懂的例子:点外卖 🍔🥤
想象一下,你在家里点外卖,HTTP 请求就像是你和餐厅之间的沟通方式。
1️⃣ 没有 http.createHttp():每次点餐都重新拨电话 📞
如果你每次点餐都重新拨打餐厅的电话,情况会变成这样:
你今天想吃 炸鸡 🍗,拨打电话 → "喂,请给我炸鸡" → 挂断电话。
明天想喝 奶茶 🥤,再拨打电话 → "喂,请给我一杯奶茶" → 挂断电话。
后天想吃 披萨 🍕,再拨打电话 → "喂,请给我披萨" → 挂断电话。
问题:
每次点单都要重新拨号,非常麻烦 📞📞📞。
餐厅可能每次接到新电话都要重新确认你的信息(比如地址),很低效。
你无法方便地管理所有点餐记录(比如想查之前点了什么)。
这个就像你每次都直接使用 fetch() 发送 HTTP 请求,每次都要重新建立连接,不方便。
2️⃣ 使用 http.createHttp():建立外卖客服专线 📞📠
现在,餐厅推出了一个VIP 点餐专线:
你第一次打电话,餐厅会给你一个专属客服编号(httpRequest)。
之后你只需要联系这个客服,不用每次重新拨号!
这个客服可以帮你存地址、提供折扣、跟踪订单,一切都更方便。
代码示例:
typescript
// 1️⃣ 创建 HTTP 客户端,相当于和餐厅的客服建立联系
let httpRequest = http.createHttp();
// 2️⃣ 第一次下单(点炸鸡 🍗)
httpRequest.request('https://restaurant.com/order', {
method: 'POST',
body: JSON.stringify({ food: '炸鸡', quantity: 1 })
}).then(response => {
console.log('订单已提交:', response.result);
}).catch(error => {
console.log('点餐失败:', error);
});
// 3️⃣ 第二次下单(点奶茶 🥤)
httpRequest.request('https://restaurant.com/order', {
method: 'POST',
body: JSON.stringify({ food: '奶茶', quantity: 2 })
}).then(response => {
console.log('订单已提交:', response.result);
}).catch(error => {
console.log('点餐失败:', error);
});
3️⃣ http.createHttp() 帮助我们做了什么?
不需要每次都拨打新电话(创建新 HTTP 连接)。
客服(HTTP 客户端)帮你记住信息,你可以设置请求头、超时时间等配置。
可以批量管理订单,比如取消、修改订单,或者查询订单状态。
4️⃣ 进阶:设置默认地址
如果你每次点餐都要重复输入地址,太麻烦了,所以你可以让客服(httpRequest)默认帮你填好地址:
typescript
// 1️⃣ 创建 HTTP 客户端,并设置默认超时时间和请求头(相当于存好地址)
let httpRequest = http.createHttp({
timeout: 5000, // 设置超时时间 5 秒
headers: { "Content-Type": "application/json", "Address": "我的家" } // 默认地址
});
// 2️⃣ 直接点餐(不需要重复输入地址)
httpRequest.request('https://restaurant.com/order', {
method: 'POST',
body: JSON.stringify({ food: '披萨', quantity: 1 })
}).then(response => {
console.log('订单已提交:', response.result);
});
📌 这样每次点单时,地址已经填好了,省时省力!
5️⃣ 总结
✅ http.createHttp() 就像是建立了一个外卖客服专线,你可以随时通过这个专线点餐,而不需要每次都重新拨号。
✅ 如果不用 http.createHttp(),你每次点餐都要重新拨号(创建新的 HTTP 请求实例),会很麻烦。
✅ 可以设置默认信息(比如请求头、超时时间),让所有请求更方便。
✅ 更适合频繁的网络请求,如用户登录、订单提交、查询数据等。
💡 你可以把 http.createHttp() 理解为:
- 有它 = 有专属客服,可以随时联系,管理所有点餐(网络请求)
- 没有它 = 每次都要重新拨号,手动输入地址,效率低
在鸿蒙 ArkTS 中,http.createHttp() 用于创建一个 HTTP 客户端实例,这个实例可以用来:
发送 HTTP 请求(如 GET、POST、PUT、DELETE)。
处理服务器返回的响应数据。
进行异步网络请求,获取远程数据(比如调用 API)。

ts
// 1️⃣ 创建 HTTP 客户端(相当于联系餐厅客服)
let httpRequest = http.createHttp();
// 2️⃣ 发送 GET 请求(查询菜单,相当于问客服:"你们有什么菜?")
httpRequest.request('https://restaurant.com/menu', {
method: 'GET'
}).then(response => {
console.log('菜单:', response.result); // 服务器返回菜单
}).catch(error => {
console.log('获取菜单失败:', error);
});
// 3️⃣ 发送 POST 请求(提交订单,相当于告诉客服:"我要点 1 份炸鸡")
httpRequest.request('https://restaurant.com/order', {
method: 'POST',
body: JSON.stringify({ food: '炸鸡', quantity: 1 }) // 提交订单内容
}).then(response => {
console.log('订单提交成功:', response.result);
}).catch(error => {
console.log('订单提交失败:', error);
});
🔹 then() 和 catch() 在点餐中的作用
.then(response => {...}):表示 请求成功时的处理逻辑(客服给你回复)。
在 点餐场景 下,客服回复 "您的订单已确认"。
.catch(error => {...}):表示 请求失败时的处理逻辑(客服告诉你订单失败)。
在 点餐场景 下,客服说 "不好意思,这道菜卖完了"。
🔹 为什么要用 http.createHttp()?
代码更清晰、可复用
http.createHttp() 让你只创建 一个 HTTP 客户端,不用每次都重新拨号(创建新连接)。
可以共享配置
你可以在 http.createHttp() 里设置 默认请求头、超时时间,后续请求都会继承这些设置,就像你的 专属客服记住了你的点餐习惯。
更适合多次请求的场景
适用于 用户登录、查询数据、提交表单 等需要频繁交互的情况,就像你经常点餐但不想每次重新拨号。
📌 总结
✅ http.createHttp() = 创建 HTTP 客户端,相当于联系餐厅的专属客服
✅ request() = 发送 HTTP 请求,相当于让客服帮你查询菜单或点餐
✅ .then() = 请求成功后的处理,相当于餐厅回复"您的订单已确认"
✅ .catch() = 请求失败后的处理,相当于餐厅回复"这道菜卖完了"