content: package com.lidroid.xutils.http;
  
  import org.apache.http.*;
  
  import java.util.Locale;
  
  /**
   * Author: wyouflf
   * Date: 13-10-26
   * Time: 下午3:20
   */
  public final class ResponseInfo<T> {
  
      private final HttpResponse response;
      public T result;
      public final boolean resultFormCache;
  
      public final Locale locale;
  
      // status line
      public final int statusCode;
      public final ProtocolVersion protocolVersion;
      public final String reasonPhrase;
  
      // entity
      public final long contentLength;
      public final Header contentType;
      public final Header contentEncoding;
  
      public Header[] getAllHeaders() {
          if (response == null) return null;
          return response.getAllHeaders();
      }
  
      public Header[] getHeaders(String name) {
          if (response == null) return null;
          return response.getHeaders(name);
      }
  
      public Header getFirstHeader(String name) {
          if (response == null) return null;
          return response.getFirstHeader(name);
      }
  
      public Header getLastHeader(String name) {
          if (response == null) return null;
          return response.getLastHeader(name);
      }
  
      public ResponseInfo(final HttpResponse response, T result, boolean resultFormCache) {
          this.response = response;
          this.result = result;
          this.resultFormCache = resultFormCache;
  
          if (response != null) {
              locale = response.getLocale();
  
              // status line
              StatusLine statusLine = response.getStatusLine();
              if (statusLine != null) {
                  statusCode = statusLine.getStatusCode();
                  protocolVersion = statusLine.getProtocolVersion();
                  reasonPhrase = statusLine.getReasonPhrase();
              } else {
                  statusCode = 0;
                  protocolVersion = null;
                  reasonPhrase = null;
              }
  
              // entity
              HttpEntity entity = response.getEntity();
              if (entity != null) {
                  contentLength = entity.getContentLength();
                  contentType = entity.getContentType();
                  contentEncoding = entity.getContentEncoding();
              } else {
                  contentLength = 0;
                  contentType = null;
                  contentEncoding = null;
              }
          } else {
              locale = null;
  
              // status line
              statusCode = 0;
              protocolVersion = null;
              reasonPhrase = null;
  
              // entity
              contentLength = 0;
              contentType = null;
              contentEncoding = null;
          }
      }
  }
  