首页 > 编程 > Java > 正文

java读取PHP接口数据的实现方法

2019-11-26 13:59:26
字体:
来源:转载
供稿:网友

和安卓是一个道理,读取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接口数据的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表