zoukankan      html  css  js  c++  java
  • [PHP] java读取PHP接口数据

    和安卓是一个道理,读取json数据

    PHP文件:

    <?php
    class Test{
        //日志路径
        const LOG_PATH="E:phpServerApachelogs\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("
    ", "", $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 != "
    "){  
                    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);
            }
        }
    }

  • 相关阅读:
    BZOJ1912 [Apio2010]patrol 巡逻
    BZOJ2432 [Noi2011]兔农
    BZOJ1010 [HNOI2008]玩具装箱toy
    BZOJ3240 [Noi2013]矩阵游戏
    洛谷【P1303】A*B Problem
    洛谷【2142】高精度减法
    洛谷【P1100】高低位交换
    OIer应该知道的二进制知识
    洛谷【P3908】异或之和
    洛谷【P2431】正妹吃月饼
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5723795.html
Copyright © 2011-2022 走看看