类 ForestResponse<T>

java.lang.Object
com.dtflys.forest.http.ResultGetter
com.dtflys.forest.http.ForestResponse<T>
所有已实现的接口:
HasHeaders, HasURL
直接已知子类:
HttpclientForestResponse, OkHttp3ForestResponse

public abstract class ForestResponse<T> extends ResultGetter implements HasURL, HasHeaders
Forest请求响应类
从以下版本开始:
1.1.0
作者:
gongjun[dt_flys@hotmail.com]
  • 字段详细资料

    • MAX_BYTES_CAPACITY

      protected static final int MAX_BYTES_CAPACITY
      另请参阅:
    • request

      protected ForestRequest request
      请求对象
    • requestTime

      protected Date requestTime
      请求开始时间
    • responseTime

      protected Date responseTime
      响应接受时间
    • closed

      protected volatile boolean closed
      响应体是否已关闭
    • isGzip

      protected boolean isGzip
      是否为Gzip压缩
    • logged

      protected volatile boolean logged
      是否已经打印过响应日志
    • statusCode

      protected volatile Integer statusCode
      网络状态码
    • reasonPhrase

      protected volatile String reasonPhrase
      原因短语
    • content

      protected volatile String content
      响应内容文本(不包括二进制数据内容的文本)
    • contentType

      protected volatile ContentType contentType
      响应内容的数据类型
    • contentEncoding

      protected volatile String contentEncoding
      响应内容的数据编码
    • charset

      protected volatile String charset
      响应内容的编码字符集
    • contentLength

      protected volatile long contentLength
      请求响应内容的数据长度
    • headers

      protected volatile ForestHeaderMap headers
      请求响应头集合
    • exception

      protected volatile Throwable exception
      请求发送过程中可能产生的异常
    • result

      protected volatile T result
      响应内容反序列化成对象后的结果
  • 构造器详细资料

  • 方法详细资料

    • getResponse

      protected ForestResponse getResponse()
      指定者:
      getResponse 在类中 ResultGetter
    • url

      public ForestURL url()
      获取响应请求的URL
      指定者:
      url 在接口中 HasURL
      返回:
      ForestURL对象实例
      从以下版本开始:
      1.5.23
    • getRequest

      public ForestRequest getRequest()
      获取该响应对象对应的请求对象
      返回:
      请求对象, ForestRequest类实例
    • getRequestTime

      public Date getRequestTime()
      获取请求开始时间
      返回:
      请求开始时间, Date对象实例
    • getResponseTime

      public Date getResponseTime()
      获取响应接受时间
      返回:
      响应接受时间, Date对象实例
    • getTimeAsMillisecond

      public long getTimeAsMillisecond()
      获取网络请求的耗时(以毫秒为单位)
      返回:
      从请求开始到接受到响应的整个耗费的时间, 单位:毫秒
    • isCanceled

      public boolean isCanceled()
      请求是否以取消
      返回:
      true: 请求已被取消; false: 未被取消
      从以下版本开始:
      1.5.27
    • isLogged

      public boolean isLogged()
      该响应是否已打过日志
      返回:
      true: 已打印过, false: 没打印过
    • setLogged

      public void setLogged(boolean logged)
      设置该响应是否已打过日志
      参数:
      logged - true: 已打印过, false: 没打印过
    • isRedirection

      public boolean isRedirection()
      是否是重定向响应
      返回:
      true: 是重定向, false: 不是重定向
    • getRedirectionLocation

      public String getRedirectionLocation()
      获取重定向地址
      返回:
      重定向地址
    • redirectionRequest

      public ForestRequest<T> redirectionRequest()
      获取重定向Forest请求
      返回:
      Forest请求对象
    • getFilename

      public String getFilename()
      获取下载文件名
      返回:
      文件名
    • getContent

      public String getContent()
      获取请求响应内容文本 和readAsString()不同的地方在于, getContent()不会读取二进制形式数据内容, 而readAsString()会将二进制数据转换成字符串读取
      返回:
      响应内容文本字符串
    • readAsString

      public String readAsString()
      以字符串方式读取请求响应内容
      返回:
      请求响应内容字符串
    • setContent

      public void setContent(String content)
    • getResult

      public T getResult()
      获取反序列化成对象类型的请求响应内容
      返回:
      反序列化成对象类型的请求响应内容
    • setResult

      public void setResult(T result)
      设置反序列化成对象类型的请求响应内容
      参数:
      result - 反序列化成对象类型的请求响应内容
    • getException

      public Throwable getException()
      获取请求发送过程中的异常
      返回:
      异常对象, Throwable类及其子类实例
    • noException

      public boolean noException()
      是否没有网络异常
      返回:
      true: 没有异常, false: 有异常
    • isTimeout

      public boolean isTimeout()
      请求是否超时
      返回:
      true: 已超时, false: 未超时
    • setException

      public void setException(Throwable exception)
      设置请求发送过程中的异常
      参数:
      exception - 异常对象, Throwable类及其子类实例
    • getStatusCode

      public int getStatusCode()
      获取请求响应的状态码
      返回:
      请求响应的状态码
    • statusCode

      public int statusCode()
      获取请求响应的状态码

      getStatusCode()

      返回:
      请求响应的状态码
      另请参阅:
    • setStatusCode

      public void setStatusCode(Integer statusCode)
      设置请求响应的状态码
      参数:
      statusCode - 请求响应的状态码
    • getReasonPhrase

      public String getReasonPhrase()
      获取请求响应的原因短语
      返回:
      请求响应的原因短语
    • getContentType

      public ContentType getContentType()
      获取请求响应内容的数据类型
      返回:
      请求响应内容的数据类型, ContentType类实例
    • setContentType

      public void setContentType(ContentType contentType)
      设置请求响应内容的数据类型
      参数:
      contentType - 请求响应内容的数据类型, ContentType类实例
    • getContentEncoding

      public String getContentEncoding()
      获取请求响应内容的数据编码
      返回:
      请求响应内容的数据编码名称
    • getContentLength

      public long getContentLength()
      获取请求响应内容的数据长度
      返回:
      请求响应内容的数据长度
    • isSuccess

      public boolean isSuccess()
      网络请求是否成功

      其判断过程如下:

      先判断 successWhen 回调函数

      再判断全局 successWhen 回调函数

      最后判断默认请求成功条件判断逻辑:

      • 1. 判断请求过程是否有异常
      • 2. 判断HTTP响应状态码是否在正常范围内(100 ~ 399)

      以上过程一个响应只会执行一次!执行过后被会缓存到 success 字段中

      下次再调用 isSuccess() 用是第一次执行的结果

      返回:
      true: 请求成功, false: 请求失败
    • status_1xx

      public boolean status_1xx()
      请求响应的状态码是否在 100 ~ 199 范围内
      返回:
      true: 在 100 ~ 199 范围内, false: 不在
    • status_2xx

      public boolean status_2xx()
      请求响应的状态码是否在 200 ~ 299 范围内
      返回:
      true: 在 200 ~ 299 范围内, false: 不在
    • status_3xx

      public boolean status_3xx()
      请求响应的状态码是否在 300 ~ 399 范围内
      返回:
      true: 在 300 ~ 399 范围内, false: 不在
    • status_4xx

      public boolean status_4xx()
      请求响应的状态码是否在 400 ~ 499 范围内
      返回:
      true: 在 400 ~ 499 范围内, false: 不在
    • status_5xx

      public boolean status_5xx()
      请求响应的状态码是否在 500 ~ 599 范围内
      返回:
      true: 在 500 ~ 599 范围内, false: 不在
    • statusOk

      public boolean statusOk()
      请求响应码是否在正常 100 ~ 399 范围内
      返回:
      true: 在 100 ~ 399 范围内, false: 不在
    • statusIs

      public boolean statusIs(int statusCode)
      请求响应码是否和输入参数相同
      参数:
      statusCode - 被比较的响应码
      返回:
      true: 相同, false: 不同
    • statusIsNot

      public boolean statusIsNot(int statusCode)
      请求响应码是否和输入参数不同
      参数:
      statusCode - 被比较的响应码
      返回:
      true: 不同, false: 相同
    • isError

      public boolean isError()
      网络请求是否失败
      返回:
      true: 失败
    • isReceivedResponseData

      public abstract boolean isReceivedResponseData()
      是否已接受到响应数据
      返回:
      true: 已接收到, false: 未接收到
    • getByteArray

      public abstract byte[] getByteArray() throws Exception
      以字节数组的形式获取请求响应内容
      返回:
      字节数组形式的响应内容
      抛出:
      Exception - 读取字节数组过程中可能的异常
    • getInputStream

      public abstract InputStream getInputStream() throws Exception
      以输入流的形式获取请求响应内容
      返回:
      输入流形式的响应内容, InputStream实例
      抛出:
      Exception - 可能抛出的异常类型
    • getHeader

      public ForestHeader getHeader(String name)
      根据响应头名称获取单个请求响应头
      参数:
      name - 响应头名称
      返回:
      请求响应头, ForestHeader类实例
    • getHeaders

      public List<ForestHeader> getHeaders(String name)
      根据响应头名称获取请求响应头列表
      参数:
      name - 响应头名称
      返回:
      请求响应头列表
      另请参阅:
    • getCookies

      public List<ForestCookie> getCookies()
      从响应头中获取Cookie列表
      返回:
      ForestCookie对象列表
    • getCookie

      public ForestCookie getCookie(String name)
      根据Cookie名称获取Cookie
      参数:
      name - Cookie名称
      返回:
      ForestCookie对象实例
      从以下版本开始:
      1.5.23
    • getHeaderValue

      public String getHeaderValue(String name)
      根据响应头名称获取请求响应头值
      参数:
      name - 响应头名称
      返回:
      请求响应头值
    • getHeaderValues

      public List<String> getHeaderValues(String name)
      根据响应头名称获取请求响应头值列表
      参数:
      name - 响应头名称
      返回:
      请求响应头值列表
    • getHeaders

      public ForestHeaderMap getHeaders()
      获取请求响应的所有响应头
      指定者:
      getHeaders 在接口中 HasHeaders
      返回:
      请求响应头表, ForestHeaderMap类实例
    • getCharset

      public String getCharset()
      获取请求响应的内容编码字符集
      返回:
      编码字符集
    • byteToString

      protected String byteToString(byte[] bytes) throws IOException
      把字节数组转换成字符串(自动根据字符串编码转换)
      参数:
      bytes - 字节数组
      返回:
      字符串
      抛出:
      IOException - 字符串处理异常
    • isClosed

      public boolean isClosed()
    • close

      public abstract void close()