# 求

**发起 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)