[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);
        }
    }
}

时间: 2024-11-08 21:20:12

[PHP] java读取PHP接口数据的相关文章

6、示例脚本:SNMP读取网络设备接口数据ifDescr,ifInOctets,ifOutOctets[C:\snmlipv6\snmp\snmp_ipv4_interfaces.txt]

本地打包下载:https://files.cnblogs.com/files/snmlsnmpsshtelnetipv6/snml_utf8ipv6.zip 6.示例脚本:读取网络设备接口数据[C:\snmlipv6\snmp\snmp_ipv4_interfaces.txt]   C:\snmlipv6\snmp\snmp_ipv4_interfaces.txt 001 run.set logevel {nolog} 002 screen.set color red {0} green {0}

Java读取操作大数据excel

工作需要,读取大数据量的excel.用Apache poi的普通模式读取,会抛内存溢出.查询文档得知有另外一种模式--用户模式.该模式不会一下子整个文件load进来放在内存里,而是一行一行的读取,这样就能避免内存溢出了. 上码: package com.ism.excel.pkg07; import java.io.InputStream; import java.sql.SQLException; import java.util.ArrayList; import java.util.Ite

java读取excel获取数据写入到另外一个excel

pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4

java 读取mysql中数据 并取出

public static String url = null; public static String username = null; public static String password = null; public static Connection conn; public static Statement stmt; public static ResultSet rs; public static String fileName = null; public static

python利用urllib2读取webservice接口数据

import urllib2 import json response = urllib2.urlopen('http://imanage.spreadtrum.com/imanage/home/pm?act=GetAllUser') all_staff = [] result = response.read() result = json.loads(result, encoding="utf-8") for k,v in result["data"].iteri

读取url接口数据

string url = "http://localhost:8180/city-smscenter/smscenter?cmd=flowsms.queryMobileSmsList&mobile=" + channel1 + "&startdate=2015-01-18%2016:50:34.015677&enddate=2020-01-20%2000:00:00"; public string jsonData(string url) {

java读取配置文件中数据

Properties pps=new Properties();        try {            pps.load(new FileInputStream("src/email.properties"));            Enumeration enum1 = pps.propertyNames();            while (enum1.hasMoreElements()) {                String strKey = (Stri

java.sql.SQLException: 无法从套接字读取更多的数据(mybatis 插入时)

今天  做mybatis 的批量插入的时候  出现 java.sql.SQLException: 无法从套接字读取更多的数据   的错误 解决方法: 由于批量插入的数据过大,需要分批次的插入. List<IdentificationData> insertList = new ArrayList<IdentificationData>(); for (IdentificationData domain : list) { insertList.add(domain); //批量插入

java通过POI技术操作Excel(2)----模板读取,录入数据

先来回顾下通常把java对Excel的操作分为以下功能:1.生成模板,导出模板:2.填充模板,录入数据:3:读取数据库数据,导出数据:在上一篇博文中,我简单记录了模板生成和导出,在这篇博文中,主要来记录--Excel文件导入,数据录入(仍然是以jsp+servlet为例) 既然要解决这个问题,那首先来分析下我们需要面对的有哪些需求需要实现: 1.Excel文件导入(这是最基础的,巧妇难为无米之炊,导入环节也是查了好久才完成的); 2.Excel文件中数据的格式判定,你要读取文件,如果文件中其实没