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

使用PHP file_get_contents调用Polltab API与Postman结果不一致求助

问题排查与解决方案

我注意到你遇到的核心问题是Postman调用Polltab的/api/poll/create接口正常,但自行编写的PHP脚本返回结果不符,这大概率是请求体格式与接口预期不匹配导致的,下面来具体分析和解决:

问题根源分析

Postman在发送这类结构化请求时,默认会使用JSON格式作为请求体,并自动设置请求头Content-Type: application/json;而你的PHP脚本用http_build_query生成的是application/x-www-form-urlencoded格式的表单数据——这两种格式对于后端接口来说是完全不同的解析逻辑,Polltab的这个API应该只接受JSON格式的请求体,所以才会返回异常结果。

修正后的PHP脚本

把请求体改为JSON格式,同时添加正确的请求头:

<?php
// 构造原始数据数组
$data = array (
    'question' => 'this is questions',
    'questionMedia' => '',
    'choices' => array (
        0 => array ('text' => '123123123'),
        1 => array ('text' => 'qweqweqwe'),
        2 => array ('text' => 'asdasdasd'),
        3 => array ('text' => 'zxczxczxcxc'),
    ),
    'allowMultiChoice' => false,
    'endDate' => NULL,
    'enableCaptcha' => false,
    'hideResults' => false,
    'restriction' => 'ip',
);

// 转换为JSON格式的请求体
$postdata = json_encode($data);

// 配置请求选项,重点添加JSON格式的Content-Type头
$opts = array('http' => array(
    'method'  => 'POST',
    'content' => $postdata,
    'header'  => implode("\r\n", [
        'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
        'Content-Type: application/json',
        'Content-Length: ' . strlen($postdata) // 可选,但能帮助后端更准确处理请求
    ])
) );

$context  = stream_context_create($opts);
$result = file_get_contents('https://www.polltab.com/api/poll/create', false, $context);
echo $result;
?>

额外注意事项

  • json_encode会自动将PHP的NULL转为JSON格式的null,符合接口对endDate字段的要求;
  • 如果遇到SSL证书验证失败的错误,可以在http选项中临时添加'verify_peer' => false, 'verify_peer_name' => false(仅测试环境使用,生产环境建议配置合法的证书信任链)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:41