Android版Web服务器实现(三)HTTP响应

本文详细介绍了在Android上实现Web服务器时如何处理HTTP响应,包括请求方法不支持、资源不存在、请求类型不支持及正常请求的情况。通过SessionThread和DataHandle类,根据不同的响应条件发送合适的HTTP状态码和内容。
摘要由CSDN通过智能技术生成

Android版Web服务器实现(二)使用服务来监听HTTP请求》一文实现了HTTP请求的监听,那么我们要如何作出响应呢?在响应时,有几种情况。

1、请求的方法不支持。比如服务端仅支持了GET/POST方法,而请求却有DELETE等,此时回复501。

2、请求的资源不存在。在服务端不存在该资源文件,将回复404页面。

3、请求的类型不支持。服务端可能存在该资源,但是该资源的类型没有支持,将回复404.7。

4、请求正常。服务端将相应的资源回复给客户端。

5、其他情况。

下面是依据这些情况的代码实现。

SessionThread.java

package com.sparkle.webservice;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

import android.util.Log;

public class SessionThread extends Thread {

	private Socket _clientSocket = null;
	private final int BUFFER_MAX = 8192;
	private DataHandle _dataHandle = null;
	private MyLog _myLog = new MyLog(getClass().getName());

	public SessionThread(Socket clientSocket) {
		this._clientSocket = clientSocket;
	}

	public void closeSocket() {
		if (_clientSocket == null) {
			return;
		}
		try {
			_clientSocket.close();
		} catch (IOException e) {
			_myLog.e(e.getMessage());
		}
	}

	public void run() {
		try {

			InputStream socketInput = _clientSocket.getInputStream();
			byte[] buffer = new byte[BUFFER_MAX];
			socketInput.read(buffer);
			_dataHandle = new DataHandle(buffer);
			byte[] content = _dataHandle.fetchContent();

			sendResponse(_clientSocket, content);

		} catch (Exc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值