1. 程式人生 > >php處理json資料(從伺服器獲取,post提交)

php處理json資料(從伺服器獲取,post提交)

<?php
/*
  author yangkaka
  2016-02-29
  php通過post傳送json資料
 */
 function http_post_json($url,$jsonstr){
	 //init
	 $ch=curl_init();
	 curl_setopt($ch,CURLOPT_POST,1);
	 curl_setopt($ch,CURLOPT_URL,$url);
	 curl_setopt($ch,CURLOPT_POSTFIELDS,$jsonstr);
	 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	 curl_setopt($ch,CURLOPT_TIMEOUT,10);
	 curl_setopt($ch,CURLOPT_HTTPHEADER,array(
	 'Content_Type:application/json;charset=utf-8',
	 'Content_Length:'.strlen($jsonstr)));
	 //exec
	 $resp=curl_exec($ch);
	 $httpcode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
	 //close
	 curl_close($ch);
	 return array($httpcode,$resp);
 } 
 //post提交的地址
 $url='http://my.blog.com';
 //json_encode()函式 將生成一個json編碼
 /*
 {
	 "a":"1",
	 "b":"2"
 } 
 */
 $jsonstr=json_encode(array('a'=>1,'b'=>2));
 list($returncode,$returncontent)=http_post_json($url,$jsonstr);
 echo $returncode
 echo $returncontent
?>


/*
	php從伺服器獲得json資料
*/
<?php
   header("Content_type:text/html;charset=utf-8");
   header('Content-type: application/json');
   function Geturl($url){
	   $ch=curl_init();
	   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	   curl_setopt($ch,CURLOPT_URL,$url);
	   curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
	   $resp=curl_exec($ch);
	   curl_close($curl);
	   return $resp;
   }
   
   $resp=Geturl("http://.....");//能獲取json資料的介面
   
   //json_decode()函式生成一個數組
   //用陣列處理的方法就可以
   //就可以處理資料
   /*array(["a"]=>int(1)
   ["b"]=>int(2)) */
   $resp=json_decode($resp,true);
   var_dump($resp);
   echo $resp['a'];

?>