从 cURL 命令到 HttpAgent:一行导入请求
Chrome DevTools 复制出来的 cURL 命令,可以直接粘贴给 HttpAgent 发起请求。本文介绍 cURL 解析能力与扩展自定义选项的方法。H团
HttpAgent 团队
排查线上问题时,我们经常从浏览器开发者工具复制 cURL 命令到终端重放。HttpAgent 更进一步:直接解析 cURL 命令字符串并发送请求,覆盖常见选项,还支持扩展自定义参数。
常规用法#
var curl = "curl -X POST https://api.example.com/user -H \"Content-Type: application/json\" -d '{\"name\":\"Furion\"}'";var result = await httpRemoteService.SendAsStringAsync(HttpRequestBuilder.FromCurl(curl));一行代码完成「解析 → 构建请求 → 发送 → 获取响应」。
支持的常见选项#
-X/ 请求方法(GET、POST、PUT、DELETE……)-H/ 请求头(可多次出现)-d/ 请求体(JSON、表单、原始字符串)-u/ Basic 身份认证-b/ Cookie-F/ 多部分表单(含文件上传)--connect-timeout/ 连接超时-e/ Referer 来源地址-A/ User-Agent
多部分表单示例:
var curl = "curl -F \"file=@C:\\avatar.png\" -F \"name=Furion\" https://api.example.com/upload";await httpRemoteService.SendAsync(HttpRequestBuilder.FromCurl(curl));扩展自定义选项#
内置解析器无法覆盖的私有参数,可以通过实现 IHttpCurlExtractor 自定义提取器扩展:
public class MyCurlExtractor : HttpCurlExtractorBase{ public override void Extract(HttpCurlParsingContext context) { // 从 context.Command 中解析自定义参数并写入 context.Builder }}builder.Services.AddHttpRemote() .AddHttpCurlExtractor<MyCurlExtractor>();完整语法与全部内置选项说明,请参阅 从 cURL 命令发送 文档。