android项目中使用的服务器上,Android 如何在Android项目中搭建HTTP服务器

前言

顾客在无人售货机前购买商品,需要把选购的商品信息上传给Android应用并显示在屏幕上,通信协议为Http协议,无人售货机将作为客户端,Android应用作为服务端,通过http协议,将商品信息上传给Android应用并显示,在这样的场景下,就需要再Android应用程序中搭建一个Http服务器,在Android应用程序中搭建服务器不比java后台那样,那么有什么好的方式可以实现这样的应用场景呢?现在是开源的世界,什么样的需求和功能,都能够很容易找到解决方案,我们可以通过一个开源的服务器框架来实现,它就是NanoHTTPD,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小,如果要使用它的话,需要在官网下载源码,把相应的源码拷贝到自己的项目中,并继承相应的类。

开始在Android项目中搭建Http服务器

1、首先需要下载NanoHTTPD的源码,官网的源码下载下来到放到项目中使用可能比较麻烦,为了方便,我这里提供一个我自己在使用的源码,源码地址:

https://pan.baidu.com/s/1BrDCA66jajI8CWJroSikpw

2、源码下载下来以后,将其拷贝在自己的项目中,下图是我拷贝到项目中的目录结构,仅供参考:

87a48b3b46dc563562a36abe15bafa1d.png

3、拷贝到自己项目中以后,创建一个新类,并继承NanoHTTPD类,重写serve()方法,注意构造函数不能少,在创建对象时,需要把端口传给父类。

public class Http extends NanoHTTPD {

private static final String TAG = "Http";

public Http(int port) {

super(port);

}

@Override

public Response serve(IHTTPSession session) {

try {

// 这一句话必须要写,否则在获取数据时,获取不到数据

session.parseBody(new HashMap());

} catch (IOException e) {

e.printStackTrace();

} catch (ResponseException e) {

e.printStackTrace();

}

StringBuilder builder = new StringBuilder();

Method method = session.getMethod();

String uri = session.getUri();

Mapparms = session.getParms();

String data = parms.get("data");//这里的data是POST提交表单时key

Log.i(TAG, "uri: "+uri);//如果有uri,会打印出uri

Log.i(TAG, "data: "+data);

builder.append("任意内容");// 反馈给调用者的数据

return newFixedLengthResponse(builder.toString());

}

4、在项目中新建一个Android服务,在该服务的onStartCommand()方法中创建刚才新建好的Http对象并调用它的方法start()方法开启http服务,端口可任意指定(0~65535之间都可以)。

public class MyServer extends Service {

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

// 创建对象,端口我这里设置为8080

HttpService myServer = new HttpService(8080);

try {

// 开启HTTP服务

myServer.start();

} catch (IOException e) {

e.printStackTrace();

}

return super.onStartCommand(intent, flags, startId);

}

}

5、启动项目,通过http请求工具进行测试,前提是项目所在的设备需要连接网络,测试地址是设备上的IP地址加上端口,最后可以看到Android项目服务器接收到了数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值