package com.util.httpclient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; import java.util.Vector; /** * * @author song * */ public class SsbusyHttpRequest { private String contentEncoding; public SsbusyHttpRequest() { this.contentEncoding = "utf-8"; } public SsbusyHttpResponse sendGet(String urlString) throws IOException { return this.send(urlString, "GET", null, null); } public SsbusyHttpResponse sendGet(String urlString, Map<String, String> params) throws IOException { return this.send(urlString, "GET", params, null); } public SsbusyHttpResponse sendGet(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException { return this.send(urlString, "GET", params, propertys); } public SsbusyHttpResponse sendPost(String urlString) throws IOException { return this.send(urlString, "POST", null, null); } public SsbusyHttpResponse sendPost(String urlString, Map<String, String> params) throws IOException { return this.send(urlString, "POST", params, null); } public SsbusyHttpResponse sendPost(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException { return this.send(urlString, "POST", params, propertys); } /** * * @param urlString * @param method * @param parameters * @param propertys * @return * @throws IOException */ private SsbusyHttpResponse send(String urlString, String method, Map<String, String> parameters, Map<String, String> propertys) throws IOException { HttpURLConnection urlConnection = null; if (method.equalsIgnoreCase("GET") && parameters != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : parameters.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append(parameters.get(key)); i++; } urlString += param; } URL url = new URL(urlString); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod(method); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); if (propertys != null) for (String key : propertys.keySet()) { urlConnection.addRequestProperty(key, propertys.get(key)); } if (method.equalsIgnoreCase("POST") && parameters != null) { StringBuffer param = new StringBuffer(); for (String key : parameters.keySet()) { param.append("&"); param.append(key).append("=").append(parameters.get(key)); } urlConnection.getOutputStream().write(param.toString().getBytes()); urlConnection.getOutputStream().flush(); urlConnection.getOutputStream().close(); } return this.makeContent(urlString, urlConnection); } /** * * @param urlString * @param urlConnection * @return * @throws IOException */ private SsbusyHttpResponse makeContent(String urlString, HttpURLConnection urlConnection) throws IOException { SsbusyHttpResponse httpResponser = new SsbusyHttpResponse(); try { InputStream in = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(in)); Vector<String> contentCollection = new Vector<String>(); StringBuffer temp = new StringBuffer(); String line = bufferedReader.readLine(); while (line != null) { contentCollection.add(line); temp.append(line).append("\r\n"); line = bufferedReader.readLine(); } bufferedReader.close(); String ecod = urlConnection.getContentEncoding(); if (ecod == null) ecod = this.contentEncoding; httpResponser.setContentCollection(contentCollection); httpResponser.setUrlString(urlString); httpResponser.setDefaultPort(urlConnection.getURL().getDefaultPort()); httpResponser.setFile(urlConnection.getURL().getFile()); httpResponser.setHost(urlConnection.getURL().getHost()); httpResponser.setPath(urlConnection.getURL().getPath()); httpResponser.setPort(urlConnection.getURL().getPort()); httpResponser.setProtocol(urlConnection.getURL().getProtocol()); httpResponser.setQuery(urlConnection.getURL().getQuery()); httpResponser.setRef(urlConnection.getURL().getRef()); httpResponser.setUserInfo(urlConnection.getURL().getUserInfo()); httpResponser.setContent(new String(temp.toString().getBytes(), ecod)); httpResponser.setContentEncoding(ecod); httpResponser.setCode(urlConnection.getResponseCode()); httpResponser.setMessage(urlConnection.getResponseMessage()); httpResponser.setContentType(urlConnection.getContentType()); httpResponser.setMethod(urlConnection.getRequestMethod()); httpResponser.setConnectTimeout(urlConnection.getConnectTimeout()); httpResponser.setReadTimeout(urlConnection.getReadTimeout()); return httpResponser; } catch (IOException e) { throw e; } finally { if (urlConnection != null) urlConnection.disconnect(); } } public String getContentEncoding() { return contentEncoding; } public void setContentEncoding(String contentEncoding) { this.contentEncoding = contentEncoding; } }