PHP cURL post数据未发送到目标url

PHP cURL post数据未发送到目标url,php,curl,Php,Curl,也许这是个重复的问题。我已经尝试过任何与我的问题类似的解决方案,我可以找到并实施它到我的问题,没有一个解决方案是工作。我需要使用PHP curl从其他系统获取数据(B)。但是在B中,我发送的数据没有定义或没有发送数据。curl过程是成功的,目标url是正确的 在我的系统中卷曲 $data['tag'] = 'getData'; $data['periode'] = $this->input->post('periode'); $url = 'http://example.com

也许这是个重复的问题。我已经尝试过任何与我的问题类似的解决方案,我可以找到并实施它到我的问题,没有一个解决方案是工作。我需要使用PHP curl从其他系统获取数据(B)。但是在B中,我发送的数据没有定义或没有发送数据。curl过程是成功的,目标url是正确的

在我的系统中卷曲

$data['tag']    = 'getData';
$data['periode'] = $this->input->post('periode');
$url = 'http://example.com/service/index.php';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, sizeof($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// I use follow location cause I get moved permanently notice
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
curl_close($ch);

echo $output;
在B系统中,我检查这个

var_dump($_POST);

输出是
array(0){}

您需要使用查询字符串格式的CURLOPT_POSTFIELDS

curl_setopt($ch, CURLOPT_POSTFIELDS, "tag=val&periode=val");
另外,您应该将CURLOPT_POST设置为1,因为它只是指定是否应该使用POST请求


您可以使用从数组构建查询字符串。

我有自己的解决方案。
我只需要将URL设置为
https
insetad of
http
,因为后端程序正在将所有非安全协议
http
重定向到安全协议
https

,我已经尝试了
http构建查询
,但没有效果。仍然返回
数组(0){}
您确定它正在发送POST请求吗?您是否尝试过将CURLOPT_POST显式设置为1?如果是这样的话,我可能会错误地认为curl需要传递查询参数,因为我认为更新的版本不需要我编辑
curl\u setopt($ch,CURLOPT\u POST,1)是否有其他方法检查我的curl是否在post请求中?检查您的Web服务器的访问或错误日志我假设我的Web服务器访问具有post请求。因为我有其他的post服务请求,它已经完成了。你试着调试这个问题了吗?对不起,我最近有afk。但我只是发布了我自己的答案。