在Android中实现一个简易的Http服务器

最近遇到一个需求需要在App中创建一个Http服务器供供浏览器调用,用了下开源的微型Htpp服务器框架:NanoHttpd,项目地址:https://github.com/NanoHttpd/nanohttpd

直接上代码

public class HttpServer extends NanoHTTPD {

  public HttpServer(int port) {
    super(port);
  }

  @Override
  public Response serve(IHTTPSession session) {

    HashMap<String, String> files = new HashMap<>();
    Method method = session.getMethod();

    if (Method.POST.equals(method)) {
      try {
        //notice:If the post with body data, it needs parses the body,or it can‘t get the body data;
        session.parseBody(files);
      }catch (IOException e) {
        return newFixedLengthResponse(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT,
            "SERVER INTERNAL ERROR: IOException: " + e.getMessage());
      }catch (ResponseException e) {
        return newFixedLengthResponse(e.getStatus(), MIME_PLAINTEXT, e.getMessage());
      }
    }

    final String postData = files.get("postData");

    String transJson = Transmit.getInstance().getAuthoriseData(postData);

    return newFixedLengthResponse(transJson);
  }

使用起来可以说是很简单了,session参数包含了请求的各种信息,这里显示获取了请求方法,因为我们的项目中暂时只用post(demo),所以只针对post请求做了处理,get的处理会更简单。因为post请求中带有body,所以需要先声明一个HashMap,将body中的键值对取出来。这里我们把请求过来的json数据映射到了"postData",然后从通过"

final String postData = files.get("postData");

这行代码将其取出来.session还有getParams(),getCookies(),getHeaders()等方法,看名字就可以知道功能了。至此一个简单的Http服务器就出来了,通常把它放在一个service中等待请求。

原文地址:https://www.cnblogs.com/oneasdf/p/9244784.html

时间: 2024-11-06 07:13:38

在Android中实现一个简易的Http服务器的相关文章

android中保存一个ArrayList到SharedPreferences的方法

保存: public static boolean saveArray() { SharedPrefernces sp=SharedPrefernces.getDefaultSharedPrefernces(this); SharedPrefernces.Editor mEdit1= sp.edit(); mEdit1.putInt("Status_size",sKey.size()); /*sKey is an array*/ for(int i=0;i<sKey.size()

C 实现一个简易的Http服务器 (二)

正文 - 直接搞起 C 实现一个简易的Http服务器 很久以前写过一个简易的http服务器, 后面和一个朋友交流, 反思后发现问题不少.在这里简单搞一下. 让其更加简单的展现httpd处理的本质, 弱化协议业务. 方便当http学习的demo.  那直接代码走起 ~ Makefile - 编译部分 all:httpd.exe client.exe httpd.exe : httpd.c gcc -g -Wno-unused-result -Wno-int-to-pointer-cast -Wno

android中定义一个可勾选的ListView

1.在layout中定义一个CheckedTextView <CheckedTextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:checkMark="?android:attr/listChoiceIndicatorMultiple" an

Android中实现一个简单的逐帧动画(附代码下载)

场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml <?xml version="1.0" encoding="utf-8"?> <animati

Tinywebserver:一个简易的web服务器

这是学习网络编程后写的一个练手的小程序,可以帮助复习I/O模型,epoll使用,线程池,HTTP协议等内容. 程序代码是基于<Linux高性能服务器编程>一书编写的. 首先回顾程序中的核心内容和主要问题,最后给出相关代码. 0. 功能和I/O模型 实现简易的HTTP服务端,现仅支持GET方法,通过浏览器访问可以返回相应内容. I/O模型采用Reactor(I/O复用 + 非阻塞I/O) + 线程池. 使用epoll事件循环用作事件通知,如果listenfd上可读,则调用accept,把新建的f

C 实现一个简易的Http服务器

引言 做一个老实人挺好的,至少还觉得自己挺老实的. 再分享一首 自己喜欢的诗人的一首 情景诗. 每个人总会有问题,至少喜欢就好, 本文 参照 http 协议   http://www.cnblogs.com/rayray/p/3729533.html html格式   http://blog.csdn.net/allenjy123/article/details/7375029 tinyhttpd 源码    https://github.com/EZLippi/Tinyhttpd 附录 本文最

一个简易的web服务器:Tinywebserver

这是学习网络编程后写的一个练手的小程序,可以帮助复习I/O模型,epoll使用,线程池,HTTP协议等内容. 程序代码是基于<Linux高性能服务器编程>一书编写的. 首先回顾程序中的核心内容和主要问题,最后给出相关代码. 0. 功能和I/O模型 实现简易的HTTP服务端,现仅支持GET方法,通过浏览器访问可以返回相应内容. I/O模型采用Reactor(I/O复用 + 非阻塞I/O) + 线程池. 使用epoll事件循环用作事件通知,如果listenfd上可读,则调用accept,把新建的f

Android中创建一个BroadcastReceiver

首先创建一个java类继承BroadcastReceiver类 package com.example.service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyBroadcastReceiver extends BroadcastRecei

android中的一个圆角图片

RoundedImageView A fast ImageView (and Drawable) that supports rounded corners (and ovals or circles) based on the original example from Romain Guy. RoundedImageView is a full superset of CircleImageView (which is actually just a subset based on this