您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)java如何獲取PHP數(shù)據(jù)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
java獲取php數(shù)據(jù)的方法:
PHP文件:
<?php class Test{ //日志路徑 const LOG_PATH="E:\phpServer\Apache\logs\\error.log"; //顯示的行數(shù) const PAGES=50; public static function main(){ header("content-type:text/html;charset=utf-8"); if(!empty($_GET['action'])){ if(!method_exists('Test',$_GET['action'])){ echo "404"; }else{ self::$_GET['action'](); } exit; } } public static function showApacheLogs(){ $test=new Test(); $result=$test->readLogs(self::LOG_PATH,self::PAGES); $json=array(); for($i=0;$i<count($result);$i++){ $line=$result[$i]; //注意這里,如果處理會json解析失敗 $line=str_replace("\r\n", "", $line); $result[$i]=array("num"=>$i+1,"msg"=>urlencode($line)); } $str=stripslashes(urldecode(json_encode($result))); echo $str; } /** * 讀取日志 */ private function readLogs($filePath,$num=20){ $fp = fopen($filePath,"r"); $pos = -2; $eof = ""; $head = false; //當(dāng)總行數(shù)小于Num時(shí),判斷是否到第一行了 $lines = array(); while($num>0){ while($eof != "\n"){ if(fseek($fp, $pos, SEEK_END)==0){ //fseek成功返回0,失敗返回-1 $eof = fgetc($fp); $pos--; }else{ //當(dāng)?shù)竭_(dá)第一行,行首時(shí),設(shè)置$pos失敗 fseek($fp,0,SEEK_SET); $head = true; //到達(dá)文件頭部,開關(guān)打開 break; } } array_unshift($lines,fgets($fp)); if($head){ break; } //這一句,只能放上一句后,因?yàn)榈轿募^后,把第一行讀取出來再跳出整個(gè)循環(huán) $eof = ""; $num--; } fclose($fp); return array_reverse($lines); } } Test::main();
java文件:
import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONArray; import org.json.JSONObject; public class ReadLogs { public static void main(String[] args) throws Exception { URL url = new URL("http://localhost/test.php?action=showApacheLogs"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(10000); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // 輸出返回結(jié)果 InputStream input = conn.getInputStream(); int resLen =0; byte[] res = new byte[1024]; StringBuilder sb=new StringBuilder(); while((resLen=input.read(res))!=-1){ sb.append(new String(res, 0, resLen)); } String jsonStr=sb.toString(); //String轉(zhuǎn)換成JSON JSONArray jsonArray=new JSONArray(jsonStr); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonObject=new JSONObject(jsonArray.getString(i)); String msg=(String) jsonObject.get("msg"); int num=(int) jsonObject.get("num"); System.out.println(num+":"+msg); } } }
感謝各位的閱讀!關(guān)于java如何獲取PHP數(shù)據(jù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。