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

curl_exec()返回string(1)空格,Postman请求同URL可正常获取JSON该如何排查?

PHP cURL 请求返回单空格字符串的排查方案
  • 第一步:打印cURL原生错误信息,确认请求链路是否存在底层异常
    在curl_exec执行后追加以下代码查看错误:
    var_dump(curl_errno($curl), curl_error($curl));
    
    存在非0错误码时可直接对应定位DNS解析、连接超时、端口不通等底层问题。
  • 第二步:查看请求响应的HTTP状态码
    调用curl_getinfo获取状态码,判断是否为服务端返回异常:
    var_dump(curl_getinfo($curl, CURLINFO_HTTP_CODE));
    
    如果返回3xx重定向状态码,可添加配置开启自动跟随重定向:
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    
    如果返回4xx/5xx,对应排查权限、参数、服务端内部错误问题。
  • 第三步:对齐Postman的请求头参数
    多数服务端会校验请求头字段,Postman默认携带的User-Agent、Accept、Authorization等头字段PHP cURL不会默认生成,可以直接从Postman导出PHP cURL代码和现有代码对比,补充缺失的头配置,示例如下:
    // 示例:补充UA和Accept头
    $headers = [
        'Accept: application/json',
        'User-Agent: PostmanRuntime/7.29.0'
    ];
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    
  • 第四步:处理压缩编码和HTTPS校验问题
    1. 如果接口返回gzip/deflate压缩内容,未开启自动解压会得到乱码或不可见内容,添加配置让cURL自动处理压缩:
    curl_setopt($curl, CURLOPT_ENCODING, '');
    
    1. HTTPS接口如果本地没有配置CA证书,会出现校验失败,可临时添加以下配置测试(生产环境需替换为正式CA证书配置,禁止关闭校验):
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    
  • 第五步:校验返回内容的二进制值
    用bin2hex打印返回内容的十六进制编码,确认是否为真的空格,还是不可见控制字符:
    var_dump(bin2hex($resp));
    
    如果值为20则是普通空格,需进一步确认服务端逻辑是否会在特定请求下返回空内容加空格;其他值可对应排查编码、字符集问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:06:03