YStudio Y++

HTTP类

Y++ / YStudio 开发文档 · 一点滴

WinHTTP 同步 HTTP 客户端。类型名必须写 HTTP类(不要写 HTTP)。声明变量时一般会自动创建会话。

可与 JSON类JS类查询串类 配合组请求体 / 拼签名。


1. 快速开始

HTTP类 http

文本 page = http.提交("GET", "https://www.example.com")
如果 (page == "") {
    输出(http.取错误())
    输出("状态码=" + 到文本(http.取状态码()))
}

http.置请求头("Content-Type", "application/json")
JSON类 body
body.置为空对象()
body.置文本("name", "Y++")
文本 resp = http.提交("POST", "https://httpbin.org/post", body.到文本())

流式(SSE,常见聊天补全 SSE 的 delta.content):

函数 流式增量(文本 增量) {
    框.文本 = 框.文本 + 增量
}

http.置请求头("Authorization", "Bearer " + apiKey)
如果 (http.提交流式("POST", url, jsonBody, &流式增量) == 假) {
    输出(http.取错误())
}

2. 常用方法

方法 说明
置超时(毫秒) 解析/连接/发送/接收共用超时;<=0 按 30000
置请求头 / 删请求头 / 清空请求头 后续请求使用
置Cookie Cookie 头
置代理 系统 / 直连 / HTTP / SOCKS 等
禁止重定向 / 置重定向次数 3xx 行为
提交(方法, URL, [正文]) 同步请求,返回响应文本
提交字节集(...) 同步,返回响应字节集
提交流式(方法, URL, 正文, &回调) SSE;回调参数为文本增量
下载(URL, 本地路径, [&进度回调]) GET 落盘
取状态码 / 取响应文本 / 取响应字节集 / 取响应字节数 上次响应
取响应头 / 取全部响应头 响应头
取错误 / 重置 错误信息;清空会话状态

3. 注意

  • 全程同步:在界面线程调用会卡住 UI;长请求考虑放到工作线程或接受阻塞。
  • 正文 / 响应文本按 UTF-8 处理。
  • POST 未手动设头时默认 application/x-www-form-urlencodedPUT/PATCH 常见默认 JSON Content-Type(以运行时为准,可随时 置请求头 覆盖)。
  • 提交流式 不是通用字节流:只解析 SSE,且当前抽取 常见聊天补全格式的 choices[].delta.content。普通 REST 用 提交;大文件用 下载
  • 每个 HTTP类 变量是独立会话(头、代理、超时、上次响应互不影响)。
  • 返回的文本缓冲有环区限制:需要保留时请立刻赋给自己的 文本 变量。

4. 与 JSON 联用

HTTP类 http
JSON类 req
JSON类 resp

req.置为空对象()
req.置文本("q", "hello")
文本 raw = http.提交("POST", url, req.到文本())
如果 (resp.解析(raw)) {
    输出(resp.取文本("data.id"))
}