美文网首页
http接口请求操作adb命令

http接口请求操作adb命令

作者: 早起有虫吃 | 来源:发表于2018-03-16 18:03 被阅读280次

    最近在做web端测试的时候突发奇想,想到了用接口的形式操作adb。
    原理如下:本地写个servlet,servlet写一个get请求的接口,当有用户访问时返回当前电脑连接的设备

    效果如下


    image.png

    代码如下:

    package com.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.dao.TestResultDaoImpl;
    import com.entity.TestResult;
    import com.google.gson.Gson;
    import com.util.CmdUtils;
    
    /**
     * Servlet implementation class TestAdd
     */
    public class GetDevicesServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public GetDevicesServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
                CmdUtils cmdUtils=new CmdUtils();
    
            
                List devices=cmdUtils.excuteCmd1("adb devices");
            
            
                //将list转化成json
                Gson gson = new Gson();
                String json = gson.toJson(devices);
    
                // 输出到界面
                System.out.println(json);
                response.setContentType("text/plain");
                response.setCharacterEncoding("gb2312");
                PrintWriter out = new PrintWriter(response.getOutputStream());
                out.print(json);
                out.flush();
            
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
    
    

    工具类:

    package com.util;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    public class CmdUtils {
        List<String>resultList=new ArrayList<String>();
        public List<String> excuteCmd(String command){
            //String command="adb devices";
            String line = null;
            StringBuilder sb = new StringBuilder();
            Runtime runtime = Runtime.getRuntime();
            try {
                Process process = runtime.exec(command);
                BufferedReader  bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                while ((line = bufferedReader.readLine()) != null) {
                    resultList.add(line);
                
                }
            } catch (IOException e) {
                
                e.printStackTrace();
            }
            return resultList;
            
        }
        public List<String> excuteCmd1(String command){
            //String command="adb devices";
            String line = null;
            StringBuilder sb = new StringBuilder();
            Runtime runtime = Runtime.getRuntime();
            try {
                Process process = runtime.exec(command);
                BufferedReader  bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                while ((line = bufferedReader.readLine()) != null) {
                    
                    if(line.contains("device")){
                        if(!line.contains("devices")){
                            String deviceId=line.substring(0, line.indexOf("device")-1);
                            resultList.add(deviceId);
                        }
                    }
                
                }
            } catch (IOException e) {
                
                e.printStackTrace();
            }
            return resultList;
            
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:http接口请求操作adb命令

          本文链接:https://www.haomeiwen.com/subject/jferqftx.html