Table of Contents

Class CurlHttpClient

Namespace
CurlUnity.Http

libcurl 的 HTTP 客户端实现。

public class CurlHttpClient : IHttpClient, IDisposable
Inheritance
CurlHttpClient
Implements
Inherited Members
Extension Methods

Remarks

代理行为:默认不使用代理,且显式屏蔽 libcurl 对 HTTPS_PROXY / HTTP_PROXY 等环境变量的自动读取,避免 开发/宿主机上的代理泄漏到业务网络。需要走代理时调用 SetProxy(HttpProxy) 显式激活;ClearProxy() 恢复默认行为。 注意 HTTP/3 无法经 HTTP 代理隧道化,启用代理后 libcurl 会回退到 HTTP/2。

Cookie 行为:EnableCookiestrue 的请求接入本 client 的 cookie jar(基于 CURLSH),跨请求持久化。 不同 CurlHttpClient 实例各自持有独立 jar,互不共享。EnableCookies=false 的请求既不读也不写 jar。jar 为纯内存存储,client Dispose 后清空。

Constructors

CurlHttpClient(bool)

Properties

Diagnostics

诊断统计。构造时 enableDiagnostics=true 才可用,否则为 null。

PreferredVersion

全局 HTTP 版本偏好。对所有后续请求生效。默认 PreferH3。

UserAgent

默认 User-Agent。对所有请求生效;请求级 Headers 里设 User-Agent 会覆盖本值(libcurl slist 优先于 CURLOPT_USERAGENT)。 默认 "CurlUnity/0.1.0"。设为 null 或空不覆盖 libcurl 默认。

VerifySSL

是否验证 SSL 证书。默认 true。

Methods

ClearProxy()

关闭代理,回到 client 的默认行为(不走代理,且屏蔽环境变量)。

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

SendAsync(IHttpRequest, CancellationToken)

异步发送一个 HTTP 请求。Task 完成后的结果所有权归调用方,用完需 Dispose() 释放底层 easy handle。

SetProxy(HttpProxy)

启用代理。对本次调用之后构建的请求生效,不影响已进入 worker 队列的请求。