[PHP] java读取PHP接口数据详解编程语言

和安卓是一个道理,读取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); 
        } 
    } 
}

[PHP] java读取PHP接口数据详解编程语言

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/12598.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论