目录
引言
仓颉团队提供了标准的HTTP协议示例(项目目录预览 - Cangjie-Examples:本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。 - GitCode),不过该例子不能处理https网站,这里记录一下https网站的处理方法。
程序编写
如果要访问https。官方的net/http包需要外部依赖 OpenSSL 3 的 ssl 和 crypto 动态库文件,故使用前需安装相关工具。 Ubuntu 22.04 系统上可使用 sudo apt install libssl-dev 命令安装 libssl-dev 工具包。
访问网站前需要先调用tlsConfig进行配置。完整的程序如下:
import net.http.*
import net.tls.*
import std.io.StringReader
func startClient(): Unit {
// 1. 构建 client 实例
let client = ClientBuilder().tlsConfig(TlsClientConfig()).build()
// 2. 发送 request
let resp = client.get("https://www.baidu.com")
// 3. 读取response
println(resp)
StringReader(resp.body).readToEnd() |> println
// 4. 关闭连接
client.close()
}
main () {
startClient()
}
运行结果
下面是程序运行结果,其中HTML页面部分省略了。
developer@developer:~/IDEProjects$ cjc -o http-api-ctrl http-api-ctrl.cj
developer@developer:~/IDEProjects$ ./http-api-ctrl
HTTP/1.1 200 OK
accept-ranges: bytes
cache-control: no-cache
connection: keep-alive
content-length: 29506
content-type: text/html
date: Fri, 13 Jun 2025 14:32:55 GMT
p3p: CP=" OTI DSP COR IVA OUR IND COM ",CP=" OTI DSP COR IVA OUR IND COM "
pragma: no-cache
server: BWS/1.1
set-cookie: BAIDUID=C5D3FFA824BD7E7918A137475F057EF1:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie: BIDUPSID=C5D3FFA824BD7E7918A137475F057EF1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie: PSTM=1749825175; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
set-cookie: BAIDUID=C5D3FFA824BD7E79A070F41AE9D0A337:FG=1; max-age=31536000; expires=Sat, 13-Jun-26 14:32:55 GMT; domain=.baidu.com; path=/; version=1; comment=bd
traceid: 174982517501916377708034852159016702599
vary: Accept-Encoding
x-ua-compatible: IE=Edge,chrome=1
x-xss-protection: 1;mode=block
body size: 29506
<!DOCTYPE html>
结束语
Cangjie语言目前最大的问题还是例子太少,好多东西都需要自己摸索。
909

被折叠的 条评论
为什么被折叠?



