• 技术文章 >php教程 >php手册

    [PHP] java读取PHP接口数据

    2016-08-04 08:53:15原创1173
    和安卓是一个道理,读取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){
                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中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:[PHP] java读取PHP接口数据
    上一篇:[PHP] PHP请求Socket接口测试 下一篇:DEDECMS中,引入文件
    大前端线上培训班

    相关文章推荐

    • 从网上搜到的phpwind 0day的代码• 一个比较蛋疼的php缓存类• PHP单例:只在整个页面周期内唯一• php操作mysql的类!• PHP函数功能语法速查表

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网