package com.gc.android.market.api;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class Tools {
public static class HttpException extends RuntimeException {
private int errorCode;
private String errorData;
public HttpException(int errorCode, String errorData) {
super("HTTP Code "+errorCode+" : "+errorData);
this.errorCode = errorCode;
this.errorData = errorData;
}
public int getErrorCode() {
return errorCode;
}
public String getErrorData() {
return errorData;
}
}
public static String postUrl(String url, Map<String, String> params) throws IOException {
String data = "";
for (String key : params.keySet()) {
data += "&"+URLEncoder.encode(key, "UTF-8") + "="
+ URLEncoder.encode(params.get(key), "UTF-8");
}
data = data.substring(1);
//System.out.println(data);
// Make the connection to Authoize.net
URL aURL = new java.net.URL(url);
HttpURLConnection aConnection = (java.net.HttpURLConnection) aURL
.openConnection();
try {
aConnection.setDoOutput(true);
aConnection.setDoInput(true);
aConnection.setRequestMethod("POST");
//aConnection.setAllowUserInteraction(false);
// POST the data
OutputStreamWriter streamToAuthorize = new java.io.OutputStreamWriter(
aConnection.getOutputStream());
streamToAuthorize.write(data);
streamToAuthorize.flush();
streamToAuthorize.close();
// check error
int errorCode = aConnection.getResponseCode();
if(errorCode >= 400) {
InputStream errorStream = aConnection.getErrorStream();
try {
String errorData = streamToString(errorStream);
throw new HttpException(errorCode,errorData);
} finally {
errorStream.close();
}
}
// Get the Response
InputStream resultStream = aConnection.getInputStream();
try {
String responseData = streamToString(resultStream);
return responseData;
} finally {
resultStream.close();
}
} finally {
aConnection.disconnect();
}
}
private static String streamToString(InputStream resultStream) throws IOException {
BufferedReader aReader = new java.io.BufferedReader(
new java.io.InputStreamReader(resultStream));
StringBuffer aResponse = new StringBuffer();
String aLine = aReader.readLine();
while (aLine != null) {
aResponse.append(aLine+"\n");
aLine = aReader.readLine();
}
return aResponse.toString();
}
}