模块  java.net.http
软件包  java.net.http

Class HttpRequest


  • public abstract class HttpRequestextends Object
    HTTP请求。

    HttpRequest实例通过HttpRequest builder构建 newBuilder方法之一获得HttpRequest构建器。 可以设置请求URI ,标题和正文。 请求体通过提供BodyPublisher供给的一个POSTPUTmethod方法。 在构建器中设置了所有必需参数后, build将返回HttpRequest 可以多次复制和修改构建器,以便构建在某些参数方面不同的多个相关请求。

    以下是将响应主体打印为String的GET请求示例:

       HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://foo.com/")) .build(); client.sendAsync(request, BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println) .join();  

    BodyPublishers类提供了许多常见发布者的实现。 或者,可以使用自定义BodyPublisher实现。

    从以下版本开始:
    11
    • 构造方法详细信息

      • HttpRequest

        protected HttpRequest()
        创建一个HttpRequest。
    • 方法详细信息

      • newBuilder

        public static HttpRequest.Builder newBuilder​(URI uri)
        使用给定的URI创建 HttpRequest构建器。
        参数
        uri - 请求URI
        结果
        一个新的请求构建器
        异常
        IllegalArgumentException - 如果不支持URI方案。
      • newBuilder

        public static HttpRequest.Builder newBuilder()
        创建 HttpRequest构建器。
        结果
        一个新的请求构建器
      • bodyPublisher

        public abstract Optional<HttpRequest.BodyPublisher> bodyPublisher()
        返回包含此请求中设置的OptionalOptional 如果请求的构建器中未设置BodyPublisher ,则Optional为空。
        结果
        一个 Optional包含此请求的 BodyPublisher
      • method

        public abstract String method()
        返回此请求的请求方法。 如果未明确设置,则任何请求的默认方法为“GET”。
        结果
        这个请求的方法
      • timeout

        public abstract Optional<Duration> timeout()
        返回包含此请求的超时持续时间的Optional 如果未在请求的构建器中设置超时持续时间,则Optional为空。
        结果
        包含此请求的超时持续时间的 Optional
      • expectContinue

        public abstract boolean expectContinue()
        返回此请求的 expect continue设置。
        结果
        此请求期望继续设置
      • uri

        public abstract URI uri()
        返回此请求的 URI
        结果
        此请求的URI
      • version

        public abstract Optional<HttpClient.Version> version()
        返回Optional其中包含将为此HttpRequest请求的HTTP协议版本。 如果未在请求的构建器中设置版本,则Optional为空。 在这种情况下,请求的版本将是发送HttpClient的版本 应查询相应的HttpResponse以确定实际使用的版本。
        结果
        HTTP协议版本
      • headers

        public abstract HttpHeaders headers()
        此请求已(或将要)发送的(用户可访问的)请求标头。
        结果
        这个请求的HttpHeaders
      • equals

        public final boolean equals​(Object obj)
        测试此HTTP请求实例是否与给定对象相等。

        如果给定对象不是HttpRequest则此方法返回false 如果两个HTTP请求的URI,方法和头字段都相等,则它们是相等的。

        该方法满足Object.equals方法的一般合同。

        重写:
        equals在类 Object
        参数
        obj - 要与此对象进行比较的对象
        结果
        true当且仅当给定对象是 HttpRequest等于此HTTP请求时
        另请参见:
        Object.hashCode()HashMap