org.scribe.model.Response Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scribe Show documentation
Show all versions of scribe Show documentation
The best OAuth library out there
The newest version!
package org.scribe.model;
import java.io.*;
import java.net.*;
import java.util.*;
import org.scribe.exceptions.*;
import org.scribe.utils.*;
/**
* Represents an HTTP Response.
*
* @author Pablo Fernandez
*/
public class Response
{
private static final String EMPTY = "";
private int code;
private String message;
private String body;
private InputStream stream;
private Map headers;
Response(HttpURLConnection connection) throws IOException
{
try
{
connection.connect();
code = connection.getResponseCode();
message = connection.getResponseMessage();
headers = parseHeaders(connection);
stream = isSuccessful() ? connection.getInputStream() : connection.getErrorStream();
}
catch (UnknownHostException e)
{
throw new OAuthException("The IP address of a host could not be determined.", e);
}
}
private String parseBodyContents()
{
body = StreamUtils.getStreamContents(getStream());
return body;
}
private Map parseHeaders(HttpURLConnection conn)
{
Map headers = new HashMap();
for (String key : conn.getHeaderFields().keySet())
{
headers.put(key, conn.getHeaderFields().get(key).get(0));
}
return headers;
}
public boolean isSuccessful()
{
return getCode() >= 200 && getCode() < 400;
}
/**
* Obtains the HTTP Response body
*
* @return response body
*/
public String getBody()
{
return body != null ? body : parseBodyContents();
}
/**
* Obtains the meaningful stream of the HttpUrlConnection, either inputStream
* or errorInputStream, depending on the status code
*
* @return input stream / error stream
*/
public InputStream getStream()
{
return stream;
}
/**
* Obtains the HTTP status code
*
* @return the status code
*/
public int getCode()
{
return code;
}
/**
* Obtains the HTTP status message.
* Returns null
if the message can not be discerned from the response (not valid HTTP)
*
* @return the status message
*/
public String getMessage()
{
return message;
}
/**
* Obtains a {@link Map} containing the HTTP Response Headers
*
* @return headers
*/
public Map getHeaders()
{
return headers;
}
/**
* Obtains a single HTTP Header value, or null if undefined
*
* @param name the header name.
*
* @return header value or null.
*/
public String getHeader(String name)
{
return headers.get(name);
}
}