如果设置了标题,则不会发布PHP cURL数据?

时间:2012-02-18 11:25:06

标签: php curl http-headers

我需要为身份验证应用程序设置标头和发布所需参数。但问题是如果我没有发布标题数据。

target.php

<?php
echo $_POST['registration_id'];
?>

包含帖子参数且没有标题的PHP脚本

<?php
  $inputdata = 'registration_id=123456789';
  $x = curl_init("http://localhost/target.php");
  curl_setopt($x, CURLOPT_POST, 1);
  curl_setopt($x, CURLOPT_POSTFIELDS, $inputdata);
  curl_setopt($x, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($x, CURLOPT_RETURNTRANSFER, 1);
  $data = curl_exec($x);
  var_dump($data);
  curl_close($x);
?>

带有标题和POST数据的PHP脚本

   <?php
      $inputdata = 'registration_id=123456789';
      $x = curl_init("http://localhost/target.php");
      curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-length: 9'));
      curl_setopt($x, CURLOPT_POST, 1);
      curl_setopt($x, CURLOPT_POSTFIELDS, $inputdata);
      curl_setopt($x, CURLOPT_FOLLOWLOCATION, 0);
      curl_setopt($x, CURLOPT_RETURNTRANSFER, 1);
      $data = curl_exec($x);
      var_dump($data);
      curl_close($x);
    ?>

所以在案例1中(没有标题)我的输出是我发送的数据。在案例2(带标题)中,我的输出为空白。如果我设置标题数据未发布。那么什么是可能的解决方案。谢谢。

2 个答案:

答案 0 :(得分:1)

怎么样?
$header = 'Content-length: ' . strlen($inputdata);
curl_setopt($x, CURLOPT_HTTPHEADER, array($header));

让Web服务器获取全部数据。

答案 1 :(得分:1)

尝试:

curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-length: '.strlen($inputdata)));