• Http Client 源码分析


    /**
    * 此接口仅代表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 {
    
    }
  • 相关阅读:
    ReactNative: 使用分组列表组件SectionList组件
    ReactNative: 使用刷新组件RefreshControl组件
    ReactNative: 使用开关组件Switch组件
    ReactNative: 使用滑块组件Slider组件
    ReactNative: 使用分段组件SegmentedControlIOS组件
    ReactNative: 使用进度条组件ProgressViewIOS组件
    Swift语言实战晋级
    《Swift开发指南》
    《数据结构与算法JavaScript描述》
    《ASP.NET MVC 5 框架揭秘》
  • 原文地址:https://www.cnblogs.com/xiaofeifei-wang/p/10489003.html
Copyright © 2020-2023  润新知