content: package com.alimama.mdrill.jdbc;
  import java.io.BufferedInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.ArrayList;
  import java.util.List;
  
  import org.apache.commons.httpclient.params.HttpMethodParams;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  import org.apache.http.util.ByteArrayBuffer; 
  
  import com.alimama.mdrill.json.JSONArray;
  import com.alimama.mdrill.json.JSONException;
  import com.alimama.mdrill.json.JSONObject;
  
  
  public class MdrillRequest {
  	SqlParser parser;
  
  	String strurl;
  
  	public MdrillRequest(SqlParser parser, String strurl) {
  		super();
  		this.parser = parser;
  		this.strurl = strurl;
  	}
  
  	String content="";
  	
  	public Long request(List<List<Object>> results) throws ClientProtocolException, IOException, JSONException {
  		String text="";
  		if (this.strurl.indexOf("higoself") >= 0) {
  //			try {
  //				text=DownLoad.result(parser.tablename, "", parser.start, parser.rows, parser.queryStr, "",  parser.fl, parser.groupby, parser.sort, parser.order).trim();
  //			} catch (Exception e) {
  //				throw new IOException(e);
  //			}
  		} else {
  			HttpClient httpclient = new DefaultHttpClient();
  			httpclient.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000*30);
  			 httpclient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF8");
  			HttpPost httppost = new HttpPost("http://" + this.strurl
  					+ "/higo/result.jsp");
  			List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
  			nameValuePairs.add(new BasicNameValuePair("project",parser.tablename));
  			nameValuePairs.add(new BasicNameValuePair("start", parser.start));
  			nameValuePairs.add(new BasicNameValuePair("rows", parser.rows));
  			nameValuePairs.add(new BasicNameValuePair("fl", parser.fl));
  			if (parser.queryStr != null) {
  				nameValuePairs
  						.add(new BasicNameValuePair("q", parser.queryStr));
  			}
  			if (parser.groupby != null) {
  				nameValuePairs.add(new BasicNameValuePair("groupby",
  						parser.groupby));
  			}
  			if (parser.sort != null) {
  				nameValuePairs.add(new BasicNameValuePair("sort", parser.sort));
  			}
  			if (parser.order != null) {
  				nameValuePairs
  						.add(new BasicNameValuePair("order", parser.order));
  			}
  
  			httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
  
  			HttpResponse response = httpclient.execute(httppost);
  
  			InputStream is = response.getEntity().getContent();
  			BufferedInputStream bis = new BufferedInputStream(is);
  			ByteArrayBuffer baf = new ByteArrayBuffer(1024);
  
  			int current = 0;
  			while ((current = bis.read()) != -1) {
  				baf.append((byte) current);
  			}
  			
  
  			text = (new String(baf.toByteArray(), "utf-8")).trim();
  		}
  		
  		
  		content=text;
  		JSONObject jsonObj = new JSONObject(text);
  		if(!"1".equals(jsonObj.get("code")))
  		{
  			return -1l;
  		}
  		Long total=jsonObj.getLong("total");
  		JSONObject data=jsonObj.getJSONObject("data");
  		JSONArray list=data.getJSONArray("docs");
  		for(int i=0;i<list.length();i++)
  		{
  			JSONObject rowMap=list.getJSONObject(i);
  			ArrayList<Object> row=new ArrayList<Object>();
  			for(int j=0;j<this.parser.colsNames.length;j++)
  			{
  				String colname=this.parser.colsNames[j];
  				row.add(j, String.valueOf(rowMap.opt(colname)));
  			}
  			results.add(row);
  		}
  		return total;
  
  	}
  }
  