java讀取PHP介面資料的實現方法_java

來源:互聯網
上載者:User

和安卓是一個道理,讀取json資料

PHP檔案:

<?phpclass Test{  //日誌路徑  const LOG_PATH="E:\phpServer\Apache\logs\\error.log";  //顯示的行數  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;  //當總行數小於Num時,判斷是否到第一行了     $lines = array();     while($num>0){       while($eof != "\n"){         if(fseek($fp, $pos, SEEK_END)==0){  //fseek成功返回0,失敗返回-1           $eof = fgetc($fp);           $pos--;         }else{                //當到達第一行,行首時,設定$pos失敗           fseek($fp,0,SEEK_SET);           $head = true;          //到達檔案頭部,開關開啟           break;         }                }       array_unshift($lines,fgets($fp));       if($head){ break; }         //這一句,只能放上一句後,因為到檔案頭後,把第一行讀取出來再跳出整個迴圈       $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);    // 輸出返回結果    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轉換成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);    }  }}

以上這篇java讀取PHP介面資料的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.