//package com.filmatchs.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import android.util.Log;
public class NewHttpClientManager {
public static String LOG_TAG = "NewHttpClientManager";
public static int METHOD_GET = 1;
public static int METHOD_POST = 2;
public static int METHOD_PUT = 3;
public static int METHOD_DELETE = 4;
private String result = "";
/**
* Do an HttpClient connection and store the result, the result could be
* returned with getResult()
*
* @param url
* @param method
* @param headers
* @param entity
* @param credential
*/
public NewHttpClientManager(String url, int method,
ArrayList headers, HttpEntity entity,
UsernamePasswordCredentials credential)
throws ClientProtocolException, IOException {
try {
result = connectResponse(url, method, headers, entity, credential, null);
} catch (ClientProtocolException ex) {
Log.e(LOG_TAG, "ClientProtocol Exception");
ex.printStackTrace();
} catch (IOException ex) {
Log.e(LOG_TAG, "IO Exception");
ex.printStackTrace();
}
}
public NewHttpClientManager(String url, int method,
ArrayList headers, HttpEntity entity,
UsernamePasswordCredentials credential, HttpHost host)
throws ClientProtocolException, IOException {
try {
result = connectResponse(url, method, headers, entity, credential, host);
} catch (ClientProtocolException ex) {
Log.e(LOG_TAG, "ClientProtocol Exception");
ex.printStackTrace();
} catch (IOException ex) {
Log.e(LOG_TAG, "IO Exception");
ex.printStackTrace();
}
}
/**
* Do an HttpClient Connection, then returns the result
*
*
* @param url
* @param method
* @param headers
* @param entity
* @param credential
* @return
* @throws ClientProtocolException
* @throws IOException
*/
public static String connectResponse(String url, int method,
List headers, HttpEntity entity,
UsernamePasswordCredentials credential, HttpHost host)
throws ClientProtocolException, IOException {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response;
String retval = null;
HttpEntityEnclosingRequest heer = null;
// setting scheme for http/https
final SSLSocketFactory sslSocketFactory = SSLSocketFactory
.getSocketFactory();
sslSocketFactory
.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
httpClient.getConnectionManager().getSchemeRegistry().register(
new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
httpClient.getConnectionManager().getSchemeRegistry().register(
new Scheme("https", sslSocketFactory, 443));
if (method == METHOD_POST) {
// ------------------ POST
Log.d(LOG_TAG, "POST to " + url);
heer = new HttpPost(url);
// Setting Entity if provided
if (entity != null) {
Log.d(LOG_TAG, "ENTITY PROVIDED");
heer.setEntity(entity);
}
// Setting Headers if provided
if (headers != null) {
Log.d(LOG_TAG, "HEADERS PROVIDED");
for (Header header : headers) {
heer.setHeader(header);
}
}
// Setting Credentials if provided
if (credential != null) {
Log.d(LOG_TAG, "CREDENTIAL PROVIDED : "
+ credential.getUserName() + ":"
+ credential.getPassword());
httpClient.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY), credential);
}
// execute the request
if (host != null) {
response = httpClient.execute(host, (HttpPost) heer);
} else {
response = httpClient.execute((HttpPost) heer);
}
} else if (method == METHOD_PUT) {
// ------------------ PUT
response = httpClient.execute(new HttpPut(url));
} else if (method == METHOD_DELETE) {
// ------------------ DELETE
response = httpClient.execute(new HttpDelete(url));
} else {
// ------------------ GET (DEFAULT: IF NOT POST, PUT, DELETE)
response = httpClient.execute(new HttpGet(url));
}
Log.d(LOG_TAG, "StatusLine " + response.getStatusLine());
// Setting the response entity
entity = response.getEntity();
// if entity is not null, then print it to the return value
if (entity != null) {
InputStream instream = entity.getContent();
String result = convertStreamToString(instream);
retval = result;
instream.close();
}
// return it!
return retval;
}
public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/**
* Get response of the HttpClient Connection
*
* @return
*/
public String getResult() {
return result;
}
}