JavaシミュレーションHTTPのGetとPost要求(拡張)



使っているのは、HttpClientです。 3.1、これはjavaの持っているURLConnectionより安定しています。
文字コード設定、システム対応の改行。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/** 
* HTTP    
* 
* @author happyqing 2015-4-20
*/ 
public final class HttpUtil { 
        private static Log log = LogFactory.getLog(HttpTookit.class); 

        /** 
         *     HTTP GET  ,       HTML 
         * 
         * @param url                    URL   
         * @param queryString        ,   null 
         * @param charset             
         * @param pretty                 
         * @return        HTML 
         */ 
        public static String doGet(String url, String queryString, String charset, boolean pretty) { 
                StringBuffer response = new StringBuffer(); 
                HttpClient client = new HttpClient(); 
                HttpMethod method = new GetMethod(url); 
                try { 
                        if (StringUtils.isNotBlank(queryString)) 
                                // get      http      ,        ,     ,   %       
                                method.setQueryString(URIUtil.encodeQuery(queryString)); 
                        client.executeMethod(method); 
                        if (method.getStatusCode() == HttpStatus.SC_OK) { 
                                BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); 
                                String line; 
                                while ((line = reader.readLine()) != null) { 
                                        if (pretty) 
                                                response.append(line).append(System.getProperty("line.separator")); 
                                        else 
                                                response.append(line); 
                                } 
                                reader.close(); 
                        } 
                } catch (URIException e) { 
                        log.error("  HTTP Get   ,       “" + queryString + "”    !", e); 
                } catch (IOException e) { 
                        log.error("  HTTP Get  " + url + " ,    !", e); 
                } finally { 
                        method.releaseConnection(); 
                } 
                return response.toString(); 
        } 

        /** 
         *     HTTP POST  ,       HTML 
         * 
         * @param url            URL   
         * @param params           ,   null 
         * @param charset     
         * @param pretty         
         * @return        HTML 
         */ 
        public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) { 
                StringBuffer response = new StringBuffer(); 
                HttpClient client = new HttpClient(); 
                PostMethod method = new PostMethod(url); 
		//        
		method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,charset);
                //  Http Post   
                if (params != null) { 
                        //HttpMethodParams p = new HttpMethodParams(); 
                        for (Map.Entry<String, String> entry : params.entrySet()) { 
                                //p.setParameter(entry.getKey(), entry.getValue());
                        		method.setParameter(entry.getKey(), entry.getValue());
                        } 
                        //method.setParams(p); 
                } 
                try { 
                        client.executeMethod(method); 
                        if (method.getStatusCode() == HttpStatus.SC_OK) { 
                                BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); 
                                String line; 
                                while ((line = reader.readLine()) != null) { 
                                        if (pretty) 
                                                response.append(line).append(System.getProperty("line.separator")); 
                                        else 
                                                response.append(line); 
                                } 
                                reader.close(); 
                        } 
                } catch (IOException e) { 
                        log.error("  HTTP Post  " + url + " ,    !", e); 
                } finally { 
                        method.releaseConnection(); 
                } 
                return response.toString(); 
        } 

        public static void main(String[] args) { 
                String y = doGet("http://video.sina.com.cn/life/tips.html", null, "GBK", true);
                System.out.println(y);
//        		Map params = new HashMap();
//        		params.put("param1", "value1");
//        		params.put("json", "{\"aa\":\"11\"}");
//                String j = doPost("http://localhost/uplat/manage/test.do?reqCode=add", params, "UTF-8", true);
//                System.out.println(j);
        } 
}
 
参考:
http://lavasoft.blog.51cto.com/62575/175911/