在 Android 设备上搭建 Web 服务器

这篇博客介绍了如何在Android设备上搭建Web服务器,包括文件下载、图片下载和POST表单处理。通过示例代码展示了如何注册并处理GET请求(如下载文件和图片)以及POST JSON请求。作者leavesC提供了AndroidServer项目的链接和详细教程。
摘要由CSDN通过智能技术生成

public class Constants {

//服务端接口的端口号
public static final int PORT_SERVER = 1995;

public static final String GET_FILE = “/file”;

public static final String GET_IMAGE = “/image”;

public static final String POST_JSON = “/json”;

}

···
.registerHandler(Constants.GET_FILE, new DownloadFileHandler()) //注册一个文件下载接口
.registerHandler(Constants.GET_IMAGE, new DownloadImageHandler()) //注册一个图片下载接口
.registerHandler(Constants.POST_JSON, new JsonHandler()) //注册一个Post Json接口
···

例如,假设设备的 IP 地址是:192.168.0.101 ,那么在访问 http://192.168.0.101:1995/file 接口时,请求操作就会由 DownloadFileHandler 来处理

下载文件

DownloadFileHandler 实现了 RequestHandler 接口,在 handle 方法中可以获取到请求头,表单数据这些信息,,通过注解声明支持 Get 方式调用,在此直接返回一个文本文件用于下载

/**

  • 作者:leavesC
  • 时间:2018/4/5 16:30
  • 描述:https://github.com/leavesC/AndroidServer
  • https://www.jianshu.com/u/9df45b87cfdf
    */
    public class DownloadFileHandler implements RequestHandler {

@RequestMapping(method = {RequestMethod.GET})
@Override
public void handle(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext httpContext) throws HttpException, IOException {
File file = createFile();
HttpEntity httpEntity = new FileEntity(file, ContentType.create(getMimeType(file.g

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中搭建服务器需要进行以下步骤: 1. 创建一个新的 Java 项目,在项目中创建一个 Servlet 类。 2. 在 Servlet 类中实现对客户端请求的响应。 3. 在 Android 工程中创建一个 AsyncTask 类用来与服务器进行通信。 4. 在 AsyncTask 类中实现网络通信的逻辑,包括连接服务器、发送请求、接收响应等。 5. 在 Android 应用中调用 AsyncTask 类来进行与服务器的通信。 具体步骤如下: 1. 在 Android Studio 中创建一个新项目。 2. 在项目中创建一个 Java 项目,选择 Web Application 项目类型。 3. 在项目中创建一个 Servlet 类,实现对客户端请求的响应。例如: ``` @WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello Servlet</h1>"); out.println("</body>"); out.println("</html>"); } } ``` 4. 在 Android 工程中创建一个 AsyncTask 类,用来与服务器进行通信。例如: ``` public class HttpTask extends AsyncTask<String, Void, String> { private String url; private Map<String, String> params; private OnCompleteListener listener; public HttpTask(String url, Map<String, String> params) { this.url = url; this.params = params; } public void setCompleteListener(OnCompleteListener listener) { this.listener = listener; } @Override protected String doInBackground(String... strings) { try { // 连接服务器 URL url = new URL(this.url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setDoOutput(true); conn.setDoInput(true); // 发送请求 OutputStream os = conn.getOutputStream(); String data = ""; for (String key : params.keySet()) { data += "&" + key + "=" + params.get(key); } os.write(data.substring(1).getBytes()); os.flush(); os.close(); // 接收响应 InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); is.close(); conn.disconnect(); return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { if (listener != null) { listener.onComplete(s); } } public interface OnCompleteListener { void onComplete(String result); } } ``` 5. 在 Android 应用中调用 AsyncTask 类来进行与服务器的通信。例如: ``` Map<String, String> params = new HashMap<>(); params.put("name", "张三"); params.put("age", "18"); HttpTask httpTask = new HttpTask("http://localhost:8080/hello", params); httpTask.setCompleteListener(new HttpTask.OnCompleteListener() { @Override public void onComplete(String result) { // 处理服务器返回的结果 Log.d("HttpTask", result); } }); httpTask.execute(); ``` 需要注意的是,如果要在 Android 应用中访问 localhost 上的服务器,需要在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` 以上就是在 Android Studio 中搭建服务器的简单步骤,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值