用curl向指定地址POST一個JSON格式的數據


  昨天的一個任務,用POST 方式向一個指定的URL推送數據。以前都用的數組來完成這個工作。

現在要求用json格式。感覺應該是一樣的。開寫。

 1 <?php
 2 $post_url = "http://news.php";
 3 $post_data = json_encode($output_news);//$output_news處理好的數組
 4 $ch = curl_init();//初始化
 5 curl_setopt($ch, CURLOPT_TIMEOUT, '30');//超時時間
 6 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Keep-Alive: 300','Connection: keep-alive')) ;
 7 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)');
 8 curl_setopt($ch, CURLOPT_POST,1);
 9 curl_setopt($ch, CURLOPT_URL,$post_url);
10 curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);
11 $contents = curl_exec($ch);
12 if(curl_errno($ch)){//出錯則顯示錯誤信息
13 print curl_error($ch);
14 }
15 curl_close($ch);

  承接頁用$_POST接收,打印了一下發現是空的。上網搜索了一下發現PHP默認只識別application/x-www.form-urlencoded標准的數據類型。

修改頭信息也沒有結果。。。

只能通過以下方式獲得數據
<?php
//第一種方法
$news    = $GLOBALS['HTTP_RAW_POST_DATA'];
//第二種方法
$news      =    file_get_contents("php://input");

 

 

  最后修改了修改了數據才能接收到。修改結果

<?php
curl_setopt($ch,CURLOPT_POSTFIELDS,"news=".$post_data);
?>
這樣承接頁就用$_POST就可以接收到數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM