# 求
**发起 HTTP 请求,返回结果。**
```xuantie
设 r = 求("http://api.example.com/data")
若 r.成功 { 示(r.值) }
```
## 你可以……
- **简单 GET**——单参形态,`值` 是响应体文本:
```xuantie
设 r = 求("https://api.example.com/data")
若 r.成功 {
示(r.值)
} 否 {
示("请求失败: " & r.错误)
}
```
- **完整请求**——双参形态给方法/头/体/超时,`值` 变字典:
```xuantie
设 r = 求("https://api.example.com/items", {
"方法": "POST",
"头": {"Content-Type": "application/json"},
"体": 化({"名": "玄铁"}),
"超时": 8000
})
若 r.成功 { 示("状态码: " & r.值["状态码"]) }
```
- **并发抓取**——每个地址一个独立 `异步` 块:
```xuantie
设 抓取 = 异步 {
设 r = 求("https://example.com")
若 r.成功 { 示("拿到 " & r.值.长度 & " 字节") }
}
等待(抓取)
```
## 注意
- **地址里带中文/空格等非 ASCII 字符时必须先 `URL编码`**:`求` 不做任何编码,未编码的中文会得到"成功但体长为 0"(服务端拒答),极易误判。详见 [08_网络与并发编程指南](../08_网络与并发编程指南.md)。
- `求` 不是 fiber 挂起点:同一个 `异步` 块里混 `等待/收/发/选/时.睡/连/读/写` 会卡住调度线程——要么块里只有 `求`,要么拆块。
- 单参形态遇 chunked 响应不解码(原样返回含块帧的文本);https 建议用双参形态拿状态码/响应头。
## 相关
[解](解.md) · [化](化.md) · [连](连.md)