package ecologylab.android.httpRequest; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.Scanner; import android.os.AsyncTask; import android.util.Log; /** * a async task to obtain metadata for a url through semantic service * @author fei * */ public class HttpMetadataRequestTask extends AsyncTask<MetadataRequestObject, String, MetadataRequestObject>{ private static final String TAG = "HttpMetadataRequestTask"; @Override protected MetadataRequestObject doInBackground(MetadataRequestObject... requestObj) { // quick and dirty way to check '|' String cleanURL = requestObj[0].getUrl().toString(); int i = cleanURL.indexOf("|"); if (i >= 0) cleanURL = cleanURL.substring(0, i); try { cleanURL = URLEncoder.encode(cleanURL, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } String requestURL = requestObj[0].getServer_url_prefix() + cleanURL; Log.i(TAG, "requestURL: " + requestURL); URL url; try { url = new URL(requestURL); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try{ InputStream in = new BufferedInputStream(urlConnection.getInputStream()); String s = convertStreamToString(in); requestObj[0].setSerializedMetadata(s); } finally { urlConnection.disconnect(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return requestObj[0]; } @Override protected void onPostExecute(MetadataRequestObject requestObj) { super.onPostExecute(requestObj); //Do anything with response.. requestObj.getRequester().callbackFromHttpRequest(requestObj); } public static String convertStreamToString(InputStream is) { Scanner s = new Scanner(is).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } }