151 lines
5.4 KiB
Java
151 lines
5.4 KiB
Java
HttpUtils
|
|
|
|
package com.ack.util;
|
|
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.net.HttpURLConnection;
|
|
import java.net.MalformedURLException;
|
|
import java.net.ProtocolException;
|
|
import java.net.URL;
|
|
import java.net.URLEncoder;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
/**
|
|
* utility class for perform Http related functions
|
|
*/
|
|
public class HttpUtils {
|
|
|
|
/**
|
|
* perform an Http POST to the supplied urlString with the supplied
|
|
* requestHeaders and formParameters
|
|
* @return String the response contents
|
|
* @param urlString the URL to post to
|
|
* @param requestHeaders a Map of the request headernames and values to
|
|
* be placed into the request
|
|
* @param formParameters a Map of form parameters and values to be placed
|
|
* into the request
|
|
* @throws MalformedURLException reports problems with the urlString
|
|
* @throws ProtocolException reports problems performing Http POST
|
|
* @throws IOException reports I/O sending and/or retrieving data over Http
|
|
*/
|
|
public static String postForm( String urlString,
|
|
Map requestHeaders,
|
|
Map formParameters )
|
|
throws MalformedURLException, ProtocolException, IOException {
|
|
return post( urlString, requestHeaders, formParameters, null );
|
|
}
|
|
|
|
/**
|
|
* perform an Http POST to the supplied urlString with the supplied
|
|
* requestHeaders and contents
|
|
* @return String the response contents
|
|
* @param urlString the URL to post to
|
|
* @param requestHeaders a Map of the request headernames and values to
|
|
* be placed into the request
|
|
* @param contents the contents of the HTTP request
|
|
* @throws MalformedURLException reports problems with the urlString
|
|
* @throws ProtocolException reports problems performing Http POST
|
|
* @throws IOException reports I/O sending and/or retrieving data over Http
|
|
*/
|
|
public static String postContents( String urlString,
|
|
Map requestHeaders,
|
|
String contents )
|
|
throws MalformedURLException, ProtocolException, IOException {
|
|
return post( urlString, requestHeaders, null, contents );
|
|
}
|
|
|
|
/**
|
|
* perform an Http POST to the supplied urlString with the supplied
|
|
* requestHeaders and formParameters
|
|
* @return String the response contents
|
|
* @param urlString the URL to post to
|
|
* @param requestHeaders a Map of the request headernames and values to
|
|
* be placed into the request
|
|
* @param formParameters a Map of form parameters and values to be placed
|
|
* into the request
|
|
* @param contents the contents of the HTTP request
|
|
* @throws MalformedURLException reports problems with the urlString
|
|
* @throws ProtocolException reports problems performing Http POST
|
|
* @throws IOException reports I/O sending and/or retrieving data over Http
|
|
*/
|
|
public static String post( String urlString,
|
|
Map requestHeaders,
|
|
Map formParameters,
|
|
String requestContents )
|
|
throws MalformedURLException, ProtocolException, IOException {
|
|
// open url connection
|
|
URL url = new URL( urlString );
|
|
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
|
|
|
// set up url connection to post information and
|
|
// retrieve information back
|
|
con.setRequestMethod( "POST" );
|
|
con.setDoInput( true );
|
|
con.setDoOutput( true );
|
|
|
|
// add all the request headers
|
|
if( requestHeaders != null ) {
|
|
Set headers = requestHeaders.keySet();
|
|
for( Iterator it = headers.iterator(); it.hasNext(); ) {
|
|
String headerName = (String) it.next();
|
|
String headerValue = (String) requestHeaders.get( headerName );
|
|
con.setRequestProperty( headerName, headerValue );
|
|
}
|
|
}
|
|
|
|
// add url form parameters
|
|
DataOutputStream ostream = null;
|
|
try {
|
|
ostream = new DataOutputStream( con.getOutputStream() );
|
|
if( formParameters != null ) {
|
|
Set parameters = formParameters.keySet();
|
|
Iterator it = parameters.iterator();
|
|
StringBuffer buf = new StringBuffer();
|
|
|
|
for( int i = 0, paramCount = 0; it.hasNext(); i++ ) {
|
|
String parameterName = (String) it.next();
|
|
String parameterValue = (String) formParameters.get( parameterName );
|
|
|
|
if( parameterValue != null ) {
|
|
parameterValue = URLEncoder.encode( parameterValue );
|
|
if( paramCount > 0 ) {
|
|
buf.append( "&" );
|
|
}
|
|
buf.append( parameterName );
|
|
buf.append( "=" );
|
|
buf.append( parameterValue );
|
|
++paramCount;
|
|
}
|
|
}
|
|
System.out.println( "adding post parameters: " + buf.toString() );
|
|
ostream.writeBytes( buf.toString() );
|
|
}
|
|
|
|
if( requestContents != null ) {
|
|
ostream.writeBytes( requestContents );
|
|
}
|
|
|
|
}
|
|
finally {
|
|
if( ostream != null ) {
|
|
ostream.flush();
|
|
ostream.close();
|
|
}
|
|
}
|
|
|
|
Object contents = con.getContent();
|
|
InputStream is = (InputStream) contents;
|
|
StringBuffer buf = new StringBuffer();
|
|
int c;
|
|
while( ( c = is.read() ) != -1 ) {
|
|
buf.append( (char) c );
|
|
}
|
|
con.disconnect();
|
|
return buf.toString();
|
|
}
|
|
}
|