nanohttpd开发

Android 应用内架设服务使用NanoHTTPD

github地址点击打开链接找到releases下载相应jar包导入到Android studio 中,添加网络权限,创建类继承NanoHTTPD,重写serve方法即可

public class HttpServer extends NanoHTTPD {
public static final int DEFAULT_SERVER_PORT = 8020;
private static final String REQUEST_ROOT = "/";

private Handler mSelfHandler;
private respBody mRespBody;

private CutTicketDeviceThread mCutTicketDeviceThread;


public HttpServer(Thread mThread) {
    super(DEFAULT_SERVER_PORT);

    //mylog.setFilename("HttpServer.log");
    mCutTicketDeviceThread = (CutTicketDeviceThread) mThread;
    mylog.debug(String.format("HttpServer创建 port=%d", DEFAULT_SERVER_PORT));

}

@Override
public Response serve(IHTTPSession session) {
    Map<String, String> header = session.getHeaders();
    if ("127.0.0.1".equals(header.get("http-client-ip")) & "/sale".equals(session.getUri())) {
        return responseSale(session);
    }
    if (REQUEST_ROOT.equals(session.getUri())) {
        mylog.error("客户端请求路径错误:" + REQUEST_ROOT);
        return responseRootPage(session);
    }

    mylog.error("客户端请求路径错误:" + session.getUri());
    return response404(session, session.getUri());
}

public Response response404(IHTTPSession session, String url) {
StringBuilder builder = new StringBuilder();
builder.append("<!DOCTYPE html><html><body>");
builder.append("Sorry, Can't Found " + url + " !");
builder.append("</body></html>\n");
mylog.error(" return 404");
return new Response(builder.toString());
}
}
利用server启动服务

public class HttpService extends Service {

private HttpServer mHttpServer;
private boolean bServerStarted;

private static Lock lock = new ReentrantLock();

@Override
public void onCreate()
{
   
    bServerStarted=false;

    mylog.info( "HttpService Create.");
    return;
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    startServer();
    return START_STICKY;
}


@Override
public void onDestroy() {
    stopServer();
    super.onDestroy();
}

/**
 * Start server.
 */
private void startServer() {
    if (mHttpServer != null  && !bServerStarted)
    {
        try {
            mHttpServer.start();
            bServerStarted = true;
            
        }catch(Exception e){
            e.printStackTrace();
        }
    }else{
        if(mHttpServer!=null)
        {
            mylog.info(String.format("Http服务已经启动了 mHttpServer=%s bServerStarted=%s  ....", mHttpServer.toString(), bServerStarted ? "true" : "false"));
        }
    }
    return;
}


/**
 * Stop server.
 */
private void stopServer() {
    if (mHttpServer != null)
    {
        try {
            mHttpServer.stop();
            bServerStarted = false;
            mylog.info(  "mHttpServer Stop().....");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    return;
}


@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

}


作者:小粪球圆又圆
来源:CSDN
原文:https://blog.csdn.net/shengsheng1_1/article/details/79743878
版权声明:本文为博主原创文章,转载请附上博文链接!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容