001 package railo.commons.net.http.httpclient3; 002 003 import java.io.IOException; 004 import java.io.InputStream; 005 import java.net.MalformedURLException; 006 import java.net.URL; 007 008 import org.apache.commons.httpclient.HostConfiguration; 009 import org.apache.commons.httpclient.HttpMethod; 010 011 import railo.commons.io.IOUtil; 012 import railo.commons.lang.StringUtil; 013 import railo.commons.net.http.HTTPResponseSupport; 014 import railo.commons.net.http.Header; 015 016 public class HTTPResponse3Impl extends HTTPResponseSupport { 017 018 private HttpMethod rsp; 019 private URL url; 020 021 public HTTPResponse3Impl(HttpMethod rsp, URL url) { 022 this.rsp=rsp; 023 this.url=url; 024 } 025 026 @Override 027 public String getContentAsString() throws IOException { 028 return getContentAsString(getCharset()); 029 } 030 031 @Override 032 public String getContentAsString(String charset) throws IOException { 033 InputStream is=null; 034 try{ 035 is=getContentAsStream(); 036 return IOUtil.toString(is,charset); 037 } 038 finally { 039 IOUtil.closeEL(is); 040 } 041 } 042 043 @Override 044 public InputStream getContentAsStream() throws IOException { 045 return rsp.getResponseBodyAsStream(); 046 } 047 048 @Override 049 public byte[] getContentAsByteArray() throws IOException { 050 InputStream is=null; 051 try{ 052 return IOUtil.toBytes(is=getContentAsStream()); 053 } 054 finally { 055 IOUtil.closeEL(is); 056 } 057 } 058 059 @Override 060 public Header getLastHeader(String name) { 061 return new HeaderWrap(rsp.getResponseHeader(name)); 062 } 063 064 @Override 065 public Header getLastHeaderIgnoreCase(String name) { 066 org.apache.commons.httpclient.Header[] headers = rsp.getResponseHeaders(); 067 for(int i=headers.length-1;i>=0;i--){ 068 if(headers[i].getName().equalsIgnoreCase(name)) return new HeaderWrap(headers[i]); 069 } 070 return null; 071 } 072 073 @Override 074 public URL getURL() { 075 HostConfiguration config = rsp.getHostConfiguration(); 076 077 try { 078 String qs = rsp.getQueryString(); 079 if(StringUtil.isEmpty(qs)) 080 return new URL(config.getProtocol().getScheme(),config.getHost(),config.getPort(),rsp.getPath()); 081 return new URL(config.getProtocol().getScheme(),config.getHost(),config.getPort(),rsp.getPath()+"?"+qs); 082 } catch (MalformedURLException e) { 083 } 084 085 return url; 086 } 087 088 @Override 089 public int getStatusCode() { 090 return rsp.getStatusCode(); 091 } 092 093 @Override 094 public String getStatusText() { 095 return rsp.getStatusText(); 096 } 097 098 @Override 099 public String getProtocolVersion() { 100 return rsp.getStatusLine().getHttpVersion(); 101 } 102 103 @Override 104 public String getStatusLine() { 105 return rsp.getStatusLine().toString(); 106 } 107 108 @Override 109 public Header[] getAllHeaders() { 110 org.apache.commons.httpclient.Header[] src = rsp.getResponseHeaders(); 111 if(src==null) return new Header[0]; 112 Header[] trg=new Header[src.length]; 113 for(int i=0;i<src.length;i++){ 114 trg[i]=new HeaderWrap(src[i]); 115 } 116 return trg; 117 } 118 119 120 }