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 java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.http.Header; import org.apache.http.HttpEntity; 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.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class NetClient { private HttpClient client; private String encoding = "UTF-8"; public NetClient() { this.client = new DefaultHttpClient(); } private String getEncoding(Header header) { if (header == null) return null; Pattern p = Pattern.compile("charset=(\\S+)"); Matcher m = p.matcher(header.getValue()); if (m.find()) { return m.group(1); } return null; } private String request(HttpRequestBase request) throws ClientProtocolException, IOException { StringBuilder sb = new StringBuilder(); HttpResponse response = this.client.execute(request); HttpEntity entity = response.getEntity(); if (entity != null) { Header[] hds = response.getHeaders("Content-Type"); Header contentType = hds.length > 0 ? hds[0] : null; String enc = this.getEncoding(contentType); InputStream is = entity.getContent(); InputStreamReader isr = new InputStreamReader(is, enc == null ? this.encoding : enc); BufferedReader reader = new BufferedReader(isr); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append(System.getProperty("line.separator")); } reader.close(); isr.close(); is.close(); } return sb.toString(); } public String get(String url) throws ClientProtocolException, IOException { HttpGet request = new HttpGet(url); return this.request(request); } public String post(String url, List<NameValuePair> queryParams) throws ClientProtocolException, IOException { HttpPost request = new HttpPost(url); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(queryParams, "UTF-8"); request.setEntity(entity); return this.request(request); } public void setEncoding(String enc) { this.encoding = enc; } public String getEncoding() { return this.encoding; } public static void main(String[] args) throws ClientProtocolException, IOException { // TODO Auto-generated method stub NetClient nc = new NetClient(); // String source = nc.get("http://localhost:8080/WebApp/PrintAll?a=bbb"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("page", "22")); params.add(new BasicNameValuePair("action", "query")); String source = nc.post("http://localhost:8080/WebApp/PrintAll", params); System.out.println(source); } }Library : http://hc.apache.org/httpcomponents-client-4.0.1/index.html
2010/05/26
HttpClinet 4.01
New version means new api~