模块 org.redkale

类 HttpResponse

  • 直接已知子类:
    HttpLocalRpcClient.HttpMessageLocalResponse, HttpMessageResponse

    public class HttpResponse
    extends Response<HttpContext,​HttpRequest>
    Http响应包 与javax.servlet.http.HttpServletResponse 基本类似。
    同时提供发送json的系列接口: public void finishJson(Type type, Object obj)
    Redkale提倡http+json的接口风格, 所以主要输出的数据格式为json, 同时提供异步接口。

    详情见: https://redkale.org

    作者:
    zhangjx
    • 字段详细资料

      • EMPTY_BTYES

        protected static final byte[] EMPTY_BTYES
      • bytes304

        protected static final byte[] bytes304
      • bytes404

        protected static final byte[] bytes404
      • bytes405

        protected static final byte[] bytes405
      • bytes500

        protected static final byte[] bytes500
      • bytes504

        protected static final byte[] bytes504
      • status200Bytes

        protected static final byte[] status200Bytes
      • LINE

        protected static final byte[] LINE
      • serverNameBytes

        protected static final byte[] serverNameBytes
      • connectCloseBytes

        protected static final byte[] connectCloseBytes
      • connectAliveBytes

        protected static final byte[] connectAliveBytes
      • CONTENT_TYPE_HTML_UTF8

        protected static final String CONTENT_TYPE_HTML_UTF8
        另请参阅:
        常量字段值
    • 方法详细资料

      • getHttpCode

        protected String getHttpCode​(int status)
        获取状态码对应的状态描述
        参数:
        status - 状态码
        返回:
        状态描述
      • getRequest

        public HttpRequest getRequest()
        获取HttpRequest
        返回:
        HttpRequest
      • getHttpCode

        protected String getHttpCode​(int status,
                                     String defValue)
      • isAutoOptions

        protected boolean isAutoOptions()
      • addCookie

        public HttpResponse addCookie​(HttpCookie... cookies)
        增加Cookie值
        参数:
        cookies - cookie
        返回:
        HttpResponse
      • createAsyncHandler

        public CompletionHandler createAsyncHandler()
        创建CompletionHandler实例
        返回:
        CompletionHandler
      • createAsyncHandler

        public <H extends CompletionHandler> H createAsyncHandler​(Class<H> handlerClass)
        创建CompletionHandler子类的实例
        传入的CompletionHandler子类必须是public,且保证其子类可被继承且completed、failed可被重载且包含空参数的构造函数。
        类型参数:
        H - 泛型
        参数:
        handlerClass - CompletionHandler子类
        返回:
        CompletionHandler
      • finishJson

        public final void finishJson​(Object obj)
        将对象以JSON格式输出
        参数:
        obj - 输出对象
      • finishJson

        public final void finishJson​(Convert convert,
                                     Object obj)
        将对象以JSON格式输出
        参数:
        convert - 指定的JsonConvert
        obj - 输出对象
      • finishJson

        public final void finishJson​(Type type,
                                     Object obj)
        将对象以JSON格式输出
        参数:
        type - 指定的类型
        obj - 输出对象
      • finishJson

        public void finishJson​(Convert convert,
                               Type type,
                               Object obj)
        将对象以JSON格式输出
        参数:
        convert - 指定的Convert
        type - 指定的类型
        obj - 输出对象
      • finish

        public final void finish​(Type type,
                                 RetResult ret)
        将RetResult对象输出
        参数:
        type - 指定的RetResult泛型类型
        ret - RetResult输出对象
      • finish

        public void finish​(Convert convert,
                           Type type,
                           RetResult ret)
        将RetResult对象输出
        参数:
        convert - 指定的Convert
        type - 指定的RetResult泛型类型
        ret - RetResult输出对象
      • finish

        public final void finish​(Type resultType,
                                 HttpResult result)
        将HttpResult对象输出
        参数:
        resultType - HttpResult.result的泛型类型
        result - HttpResult输出对象
      • finish

        public void finish​(Convert convert,
                           Type resultType,
                           HttpResult result)
        将HttpResult对象输出
        参数:
        convert - 指定的Convert
        resultType - HttpResult.result的泛型类型
        result - HttpResult输出对象
      • finishFuture

        public final void finishFuture​(Type valueType,
                                       CompletionStage future)
        将CompletionStage对象输出
        参数:
        valueType - CompletionFuture.value的泛型类型
        future - CompletionStage输出对象
      • finishFuture

        public void finishFuture​(Convert convert,
                                 Type valueType,
                                 CompletionStage future)
        将CompletionStage对象输出
        参数:
        convert - 指定的Convert
        valueType - CompletionFuture.value的泛型类型
        future - CompletionStage输出对象
      • finishJsonFuture

        public final void finishJsonFuture​(Type valueType,
                                           CompletionStage future)
        将CompletionStage对象输出
        参数:
        valueType - CompletionFuture.value的泛型类型
        future - CompletionStage输出对象
      • finishJsonFuture

        public void finishJsonFuture​(Convert convert,
                                     Type valueType,
                                     CompletionStage future)
        将CompletionStage对象输出
        参数:
        convert - 指定的Convert
        valueType - CompletionFuture.value的泛型类型
        future - CompletionStage输出对象
      • finishPublisher

        public final <T> void finishPublisher​(Type valueType,
                                              Flow.Publisher<T> publisher)
        将Flow.Publisher对象输出
        类型参数:
        T - 泛型
        参数:
        valueType - Publisher的泛型类型
        publisher - Publisher输出对象
      • finishPublisher

        public final <T> void finishPublisher​(Convert convert,
                                              Type valueType,
                                              Flow.Publisher<T> publisher)
        将Flow.Publisher对象输出
        类型参数:
        T - 泛型
        参数:
        convert - 指定的Convert
        valueType - Publisher的泛型类型
        publisher - Publisher输出对象
      • finishPublisher

        public final void finishPublisher​(Type valueType,
                                          Object publisher)
        将第三方类Flow.Publisher对象(如: Mono/Flux)输出
        参数:
        valueType - Publisher的泛型类型
        publisher - Publisher输出对象
      • finishPublisher

        public final void finishPublisher​(Convert convert,
                                          Type valueType,
                                          Object publisher)
        将第三方类Flow.Publisher对象(如: Mono/Flux)输出
        参数:
        convert - 指定的Convert
        valueType - Publisher的泛型类型
        publisher - Publisher输出对象
      • finishScopeFuture

        public final void finishScopeFuture​(CompletionStage<HttpScope> future)
        将HttpScope对象输出
        参数:
        future - HttpScope输出异步对象
      • finishScopeFuture

        public void finishScopeFuture​(Convert convert,
                                      CompletionStage<HttpScope> future)
        将HttpScope对象输出
        参数:
        convert - 指定的Convert
        future - HttpScope输出异步对象
      • finish

        public final void finish​(HttpScope result)
        将HttpScope对象输出
        参数:
        result - HttpScope输出对象
      • finish

        public void finish​(Convert convert,
                           HttpScope result)
        将HttpScope对象输出
        参数:
        convert - 指定的Convert
        result - HttpScope输出对象
      • finish

        public final void finish​(Object obj)
        将结果对象输出
        参数:
        obj - 输出对象
      • finish

        public final void finish​(Convert convert,
                                 Object obj)
        将结果对象输出
        参数:
        convert - 指定的Convert
        obj - 输出对象
      • finish

        public final void finish​(Type type,
                                 Object obj)
        将结果对象输出
        参数:
        type - 指定的类型, 不一定是obj的数据类型,必然obj为CompletableFuture, type应该为Future的元素类型
        obj - 输出对象
      • finish

        public void finish​(Convert convert,
                           Type type,
                           Object obj)
        将结果对象输出
        参数:
        convert - 指定的Convert
        type - 指定的类型, 不一定是obj的数据类型,必然obj为CompletionStage, type应该为Future的元素类型
        obj - 输出对象
      • finish

        public void finish​(String obj)
        将指定字符串以响应结果输出
        参数:
        obj - 输出内容
      • finish

        public void finish​(int status,
                           String message)
        以指定响应码附带内容输出
        参数:
        status - 响应码
        message - 输出内容
      • finish

        public <A> void finish​(byte[] bs,
                               int offset,
                               int length,
                               Consumer<A> callback,
                               A attachment)
      • finish

        public void finish​(String contentType,
                           byte[] bs)
        将指定byte[]按响应结果输出
        参数:
        contentType - ContentType
        bs - 输出内容
      • finish

        public void finish​(String contentType,
                           ByteTuple array)
        将ByteTuple按响应结果输出
        参数:
        contentType - ContentType
        array - 输出内容
      • finish

        protected void finish​(boolean kill,
                              String contentType,
                              byte[] bs,
                              int offset,
                              int length)
        将指定byte[]按响应结果输出
        参数:
        kill - kill
        contentType - ContentType
        bs - 输出内容
        offset - 偏移量
        length - 长度
      • finish

        protected <A> void finish​(boolean kill,
                                  String contentType,
                                  @Nonnull
                                  byte[] bodyContent,
                                  int bodyOffset,
                                  int bodyLength,
                                  Consumer<A> callback,
                                  A attachment)
        将指定byte[]按响应结果输出
        类型参数:
        A - A
        参数:
        kill - kill
        contentType - ContentType
        bodyContent - 输出内容
        bodyOffset - 偏移量
        bodyLength - 长度
        callback - Consumer
        attachment - ConvertWriter
      • finish304

        public void finish304()
        以304状态码输出
      • finish404

        public void finish404()
        以404状态码输出
      • finish405

        public void finish405()
        以405状态码输出
      • finish500

        public void finish500()
        以500状态码输出
      • finish504

        public void finish504()
        以504状态码输出
      • createHeader

        protected void createHeader()
      • finish

        public void finish​(File file)
                    throws IOException
        将指定文件按响应结果输出
        参数:
        file - 输出文件
        抛出:
        IOException - IO异常
      • finish

        public void finish​(String fileName,
                           File file)
                    throws IOException
        将文件按指定文件名输出
        参数:
        fileName - 输出文件名
        file - 输出文件
        抛出:
        IOException - IO异常
      • finishFile

        protected void finishFile​(File file,
                                  ByteArray fileBody)
                           throws IOException
        将指定文件句柄或文件内容按响应结果输出,若fileBody不为null则只输出fileBody内容
        参数:
        file - 输出文件
        fileBody - 文件内容, 没有则输出file
        抛出:
        IOException - IO异常
      • finishFile

        protected void finishFile​(String fileName,
                                  File file,
                                  ByteArray fileBody)
                           throws IOException
        将指定文件句柄或文件内容按指定文件名输出,若fileBody不为null则只输出fileBody内容 file 与 fileBody 不能同时为空 file 与 fileName 也不能同时为空
        参数:
        fileName - 输出文件名
        file - 输出文件
        fileBody - 文件内容, 没有则输出file
        抛出:
        IOException - IO异常
      • skipHeader

        public HttpResponse skipHeader()
        跳过header的输出 通常应用场景是,调用者的输出内容里已经包含了HTTP的响应头信息,因此需要调用此方法避免重复输出HTTP响应头信息。
        返回:
        HttpResponse
      • existsHeader

        public boolean existsHeader​(String name)
        判断是否存在Header值
        参数:
        name - header-name
        返回:
        是否存在
      • getHeader

        public String getHeader​(String name)
        获取Header值
        参数:
        name - header名
        返回:
        header值
      • setHeader

        public HttpResponse setHeader​(String name,
                                      Object value)
        设置Header值
        参数:
        name - header名
        value - header值
        返回:
        HttpResponse
      • addHeader

        public HttpResponse addHeader​(String name,
                                      Object value)
        添加Header值
        参数:
        name - header名
        value - header值
        返回:
        HttpResponse
      • addHeader

        public HttpResponse addHeader​(Map<String,​?> map)
        添加Header值
        参数:
        map - header值
        返回:
        HttpResponse
      • setStatus

        public HttpResponse setStatus​(int status)
        设置状态码
        参数:
        status - 状态码
        返回:
        HttpResponse
      • getStatus

        public int getStatus()
        获取状态码
        返回:
        状态码
      • getContentType

        public String getContentType()
        获取 ContentType
        返回:
        ContentType
      • setContentType

        public HttpResponse setContentType​(String contentType)
        设置 ContentType
        参数:
        contentType - ContentType
        返回:
        HttpResponse
      • getContentLength

        public long getContentLength()
        获取内容长度
        返回:
        内容长度
      • setContentLength

        public HttpResponse setContentLength​(long contentLength)
        设置内容长度
        参数:
        contentLength - 内容长度
        返回:
        HttpResponse
      • getCacheHandler

        protected BiConsumer<HttpResponse,​byte[]> getCacheHandler()
        获取输出时的拦截器
        返回:
        拦截器
      • setCacheHandler

        protected void setCacheHandler​(BiConsumer<HttpResponse,​byte[]> cacheHandler)
        设置输出时的拦截器
        参数:
        cacheHandler - 拦截器
      • retResultHandler

        public void retResultHandler​(BiFunction<HttpRequest,​RetResult,​RetResult> retResultHandler)
        设置输出RetResult时的拦截器
        参数:
        retResultHandler - 拦截器