Http Client 源码分析

夙愿已清 提交于 2020-12-19 03:05:02
/**
* 此接口仅代表HTTP请求执行的最基本约定。
* 它对请求执行过程没有任何限制或特定的细节,并将状态管理、身份验证和重定向处理的细节留给单个实现。
*/
public interface HttpClient {
HttpResponse execute(HttpUriRequest request);
}


/**
* 用于提供创建{@link CloseableHttpClient}实例工厂方法.
*/
public class HttpClients {
public static CloseableHttpClient createDefault() {
return HttpClientBuilder.create().build();
}
}


/**
* HTTP消息 包括从客户机到服务器的请求和从服务器到客户机的响应。
* HTTP-message = Request | Response ; HTTP/1.1 messages
* 
* {@link HttpRequest} and {@link HttpResponse} 接口继承{@link HttpMessage }
*/
public interface HttpMessage {
}


/**
* 从客户机到服务器的请求消息包括,
* 在该消息的第一行中,要应用于该资源的方法、资源的标识符以及正在使用的协议版本。
* method uri http/1.1
*/
public interface HttpRequest extends HttpMessage {
RequestLine getRequestLine(); // 获取请求行
}


/**
* 在接收和解释请求消息后,服务器用HTTP响应消息响应。
* 设置/获取 状态行、状态码、原因短语、实体、locale
*/
public interface HttpResponse extends HttpMessage {
}


/**
* Extended version of the {@link HttpRequest} interface that provides convenience methods to access request properties such as request URI and method type.
* {@link HttpRequest}接口的扩展版本,提供访问请求属性(如请求URI和方法类型)的方便方法。
*/
public interface HttpUriRequest extends HttpRequest {
String getMethod();
URI getURI();
void abort() ; // 中止请求的执行.
boolean isAborted();
}


/**
* {@link HttpUriRequest}的基本实现.
*/
public abstract class HttpRequestBase extends AbstractExecutionAwareRequest implements HttpUriRequest, Configurable {
private ProtocolVersion version;
private URI uri;
private RequestConfig config;
}


/**
* {@link HttpClient}的基本实现,也实现{@link Closeable}。
*/
@Contract(threading = ThreadingBehavior.SAFE)
public abstract class CloseableHttpClient implements HttpClient, Closeable {
// 只有多个重载的execute()方法、用于执行请求、
// 使用默认上下文执行请求,并使用给定的响应处理程序处理响应。

}


/**
* {@code Closeable}是可以关闭的数据源或目标.
* 调用close方法释放对象所持有的资源(如打开的文件).
*/
public interface Closeable extends AutoCloseable {
}


/**
* HTTP GET method.
* GET方法意味着检索请求URI标识的任何信息(以实体的形式)。
* 通过分析给定的字符串创建URI。
*/
public class HttpGet extends HttpRequestBase {

}


/**
* HTTP POST method.
* POST方法用于请求源服务器接受请求中包含的实体作为请求行中请求URI标识的资源的新下属。
*/
public class HttpPost extends HttpEntityEnclosingRequestBase {

}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!