Android利用Andserver搭建服務器

文章目錄

效果

在這裏插入圖片描述

需求

  在手機上有一個功能,但是需要使用電腦控制什麼時候開始這個功能,然後上網搜索,找到了AndServer可以滿足要求,我只是實現了簡單的功能,如果感興趣的話,可以深入的研究一下。

地址如下:https://github.com/yanzhenjie/AndServer

步驟
  1. 引入
implementation 'com.yanzhenjie:andserver:1.0.2'
  1. 申請權限
<uses-permission android:name="android.permission.INTERNET" />
  1. 初始化server
    private void initServer() {
        AssetManager assetManager = getAssets();
        WebSite webSite = new AssetsWebsite(assetManager, "");

        AndServer andServer = new AndServer.Build()
                .website(webSite)
                .timeout(30 * 1000)
                .port(1234)
                .registerHandler("login", new loginRequest())
                .registerHandler("search",new searchRequest())
                .listener(mListener)
                .build();
        server = andServer.createServer();
        server.start();
    }
  1. 主要代碼
    /**
     * 監聽事件
     */
    private Server.Listener mListener = new Server.Listener() {

        @Override
        public void onStarted() {
            Log.e(TAG, "onStarted: ");
            tvTips.setText("服務啓動成功");
        }

        @Override
        public void onStopped() {
            Log.e(TAG, "onStopped: ");
        }

        @Override
        public void onError(Exception e) {
            Log.e(TAG, "onError: " + e.getMessage());
            tvTips.setText("服務啓動失敗:"+e.getMessage());
        }
    };


    public class searchRequest implements RequestHandler{
        @Override
        public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException {

           runOnUiThread(new Runnable() {
               @Override
               public void run() {
                   Toast.makeText(MainActivity.this, "拍照", Toast.LENGTH_SHORT).show();
               }
           });
            StringEntity stringEntity = new StringEntity("拍照", "utf-8");
            response.setEntity(stringEntity);

        }
    }

    public class loginRequest implements RequestHandler {

        @Override
        public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException {

            Map<String, String> params = HttpRequestParser.parse(request);

            // Request params.
            final String userName = params.get("name");
            final String password = params.get("pwd");
            //中文需要解碼
            final String userName1 = Uri.decode(userName);
            final String password1 = Uri.decode(password);
            Log.e(TAG, "handle: " + userName);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    tvUsername.setText(userName1);
                    tvPwd.setText(password1);
                }
            });
            StringBuilder sb = new StringBuilder();
            sb.append("用戶名:" + userName1);
            sb.append("\n");
            sb.append("密碼:" + password1);
            StringEntity stringEntity = new StringEntity(sb.toString(), "utf-8");
            response.setEntity(stringEntity);
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章