程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [PHP] java讀取PHP接口數據,javaphp

[PHP] java讀取PHP接口數據,javaphp

編輯:關於PHP編程

[PHP] java讀取PHP接口數據,javaphp


和安卓是一個道理,讀取json數據

PHP文件:

<?php
class 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);
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved