HttpResponse对象封装
前言
前一篇文章我们介绍了如何去封装request对象,下面我们对如何封装response对象进行介绍。
一、构建过程
1.构建httpresponse
代码如下(示例):
public class HttpResponse {
private Map<Key,String> respondHeader ; // 头信息键值对
private byte[] data ; // 保存服务器返回给客户端的数据
private StringBuffer header ; // 头信息
private Socket client ; // 保存客户端socket,方便在发送response后及时关闭socket
private String proxy ; // 协议
private int code ; // 返回代码,如404,200
private String state ; // 状态 ,如 ok,not found
public void setCode(int code) {
this.code = code;
}
public void setState(String state) {
this.state = state;
}
public void setProxy(String proxy) {
this.proxy = proxy;
}
public HttpResponse() {
respondHeader = new HashMap<>() ;
header = new StringBuffer() ;
}
// 头信息构建
private void build(){
header.append(proxy+" ") ;
header.append(code+" ") ;
header.append(state+"\r\n") ;
for (Map.Entry<Key,String> per:respondHeader.entrySet()){
header.append(per.getKey()) ;
header.append(": ") ;
header.append(per.getValue()) ;
header.append("\r\n") ;
}
header.append("\r\n") ;
}
// 该方法用于从服务器写入数据
public void setRespondBody(byte[] i){
this.data = i ;
}
// 该方法用于设置响应头
public void setRespondHeader(Key key,String value){
respondHeader.put(key,value) ;
}
// 该方法用于向服务器发送数据
public void sendToClient(OutputStream stream) throws IOException {
build();
System.out.println(header);
stream.write(header.toString().getBytes(StandardCharsets.UTF_8));
if(data!=null){
stream.write(data);
}
}
// 设置socket
public void setClient(Socket client) {
this.client = client;
}
public void socketClosed() throws IOException {
client.close();
}
}
总结
这里我们对response对象进行了封装。
感谢阅读,欢迎交流!