php - 如何使用 curl 发布数据并根据发布的数据获得响应

标签 php curl

这是我的代码 POST数据:

<?php
$data = array("account" => "1234", "dob" => "30051987", "site" => "mytestsite.com");
$data_string = json_encode($data);

$url = 'http://mydomain.com/curl.php';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close($ch);
$json_result = json_decode($result, true);
?>

<p>Your confirmation number is: <strong><?php echo $json_result['ConfirmationCode']; ?></strong></p>

而在域/服务器上 curl.php 文件代码如下:
<?php
// header 
header("content-type: application/json");

if($_POST):
    echo json_encode(array('ConfirmationCode' => 'somecode'));
else:
    echo json_encode(array('ConfirmationCode' => 'none'));
endif;
?>

但它总是返回 'none' .我错过了什么吗?

最佳答案

真正的问题在于捕获它..

<?php
 $data = array("account" => "1234", "dob" => "30051987", "site" => "mytestsite.com");
 $data_string = json_encode($data);

 $url = 'http://mydomain.com/curl.php';

 $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                     'Content-Type: application/json',
                 'Content-Length: ' . strlen($data_string))
   );
  $result = curl_exec($ch);
  curl_close($ch);

  echo $result;

  //$json_result = json_decode($result, true);
 ?>

你的 curl.php 代码
<?php
 $fp = fopen('php://input', 'r');
 $rawData = stream_get_contents($fp);

 echo "<pre>";
 print_r($rawData);
 echo "</pre>";


 /*if($rawData):
 echo json_encode(array('ConfirmationCode' => 'somecode'));;
 else:
 echo json_encode(array('ConfirmationCode' => 'none'));
 endif;*/

 ?>

由于您在正文中将数据作为原始 JSON 发送,因此它不会填充 $_POST 变量

希望能帮到你

关于php - 如何使用 curl 发布数据并根据发布的数据获得响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377042/

相关文章:

php - 打印包含 php 和 sql 值的表

javascript - 如何通过ajax post序列化上传

c++ - gdb 显示奇怪的堆栈跟踪

c++ - libcurl 如何更改编码 url 行为

cURL 和 etag 的使用?

php - curl_exec 从 Paypal REST Api 返回一个 XMLFault

php - 在php函数中过滤syslog,然后在JS div中显示内容?

php - 你能举例说明在 flex 应用程序中使用 php 吗?

php - 用于选择表的下拉列表和用于过滤的附加下拉列表

php - 如何在 php 中调用 curl?