You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WWW::Curl::Easy发起API请求如何仅提取HTTP响应体内容

问题原因

你代码中设置了$curl->setopt(CURLOPT_HEADER, 1);,该参数会让curl将HTTP响应头和响应体一并写入返回的$response变量中,这是你拿到的结果包含响应头的核心原因。


方案1:直接修改curl配置(最简便)

如果不需要单独获取响应头信息,直接将CURLOPT_HEADER参数的值改为0即可,修改后curl返回的$response就只有纯响应体,无需额外解析处理:

# 把原来的参数1改成0
$curl->setopt(CURLOPT_HEADER, 0);

方案2:保留CURLOPT_HEADER配置,手动提取响应体

如果你确实需要同时保留响应头做其他逻辑处理,可以用以下两种方式提取响应体:

方式A:字符串分割

HTTP协议中响应头和响应体之间固定用两个连续换行分隔,直接按分隔符分割即可:

# 兼容Windows换行(\r\n)和Unix换行(\n)格式
my ($response_headers, $response_body) = split /\r?\n\r?\n/, $response, 2;

分割后$response_body就是你需要的纯响应体内容。

方式B:使用HTTP::Response模块解析

之前的用法没有生效大概率是未提前加载模块,另外建议用decoded_content方法替代content,该方法会自动处理响应编码,适配性更强:

use HTTP::Response;

my $response_obj = HTTP::Response->parse($response);
my $response_body = $response_obj->decoded_content;

内容的提问来源于stack exchange,提问作者tomsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:45:02