对于网络通信这部分,一直搞不清楚网络模型中传输层协议和应用层协议是怎么进行交互的,于是想通过直接使用TCP协议实现http请求的发送,所以这里通过Socket编程来完成这项工作,在Java中还可以使用原生的HttpURLConnection
或者Apache中的HttpClient
完成Http请求的发送,但是这种方式已经是对Socket进行封装,对我们理解Http
的原理没有帮助。
要想完成这个功能需要以下两部分技能:
- Java网络编程的相关内容
- Http协议的相关内容:不要求特别了解,但是基本的机制需要知道
首先把整体的代码先列出来,如下MyHttpGet
:
public class MyHttpGet {
private String host;
private int port;
private String contextPath;
private StringBuffer requestMessage;
private Map<String, String> headers = new LinkedHashMap<>();
private Map<String, String> params = new HashMap<>();
public MyHttpGet(String address) throws MalformedURLException{
URL url = new URL(address);
this.port = url.getDefaultPort();
this.host = url.getHost();
this.contextPath