package com.androidol.protocol; import java.io.InputStream; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import com.androidol.events.Event; import com.androidol.events.ProtocolEvents; import com.androidol.feature.Vector; import com.androidol.format.Format; import com.androidol.util.Util; public class HTTP extends Protocol { protected String url = ""; protected boolean readWithPost = false; protected HashMap<String, String> params = null; public HTTP(Format format, String url) { super(format); this.url = url; } /* * */ @Override public void read() { this.threadPool.execute( new Runnable() { @Override public void run() { try { //Util.printDebugMessage("@...read features with HTTP protocol..."); DefaultHttpClient client = new DefaultHttpClient(); URI uri = new URI(HTTP.this.url); // TODO: add request parameters in this.params HttpGet method = new HttpGet(uri); HttpResponse response = client.execute(method); InputStream inputStream = response.getEntity().getContent(); /* InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader buffer = new BufferedReader(reader); StringBuilder sb = new StringBuilder(); String cur; while ((cur = buffer.readLine()) != null) { sb.append(cur + "\n"); } inputStream.close(); String resp = sb.toString(); */ // TODO: parse features/geometries from response stream ArrayList<Vector> parsedFeatures = HTTP.this.format.parseFeatures(inputStream); Event event = new Event(); event.properties.put("type", ProtocolEvents.READ_SUCCESS); event.properties.put("data", parsedFeatures); //Util.printDebugMessage(" ...trigger ProtocolEvents.READ_SUCCESS event..."); HTTP.this.events.triggerEvent(ProtocolEvents.READ_SUCCESS, event); } catch (Exception e) { Event event = new Event(); event.properties.put("type", ProtocolEvents.READ_FAILURE); //Util.printDebugMessage(" ...trigger ProtocolEvents.READ_FAILURE event..."); HTTP.this.events.triggerEvent(ProtocolEvents.READ_FAILURE, event); Util.printErrorMessage(e.toString()); } finally { // TODO: some error handling } } }); } /* * */ public void addRequestParameter() { } /* * */ public void removeRequestParameter() { } }