1. 程式人生 > >java傳送http請求獲取響應結果【工具包系列】

java傳送http請求獲取響應結果【工具包系列】

import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.log4j.Logger;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;

/**
 * ClassName: HttpRequestSender
 * @version  
 * @since JDK 1.7 
 */
public class HttpRequestSender {
	
	private static Logger logger = Logger.getLogger(HttpRequestSender.class);
	
	public static HttpResponse sendGet(String url, String queryString){
		if(url == null || url.equals("")){
			return null;
        }
		HttpRequest request = new HttpRequest(HttpResultType.STRING);
		request.setUrl(url);
		request.setMethod(HttpRequest.METHOD_GET);
		
		if(queryString != null && !queryString.equals("")){
			request.setQueryString(queryString);
        }
		HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
		try {
			HttpResponse httpResponse = httpProtocolHandler.execute(request, "", "");
			return httpResponse;
		} catch (HttpException e) {
            logger.error("Fail with send GET request: ", e);
		} catch (IOException e) {
            logger.error("Fail with send GET request: ", e);
		} catch (Exception e){
			logger.error("Fail with send GET request: ", e);
		}
		
		return null;
	}
	
	public static HttpResponse sendPost(String url, NameValuePair[] nvp){
		if(url == null || url.equals("")){
			return null;
        }
		HttpRequest request = new HttpRequest(HttpResultType.STRING);
		request.setUrl(url);
		request.setMethod(HttpRequest.METHOD_POST);
		
		if(nvp != null){
			request.setParameters(nvp);
        }
		HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
		try {
			HttpResponse httpResponse = httpProtocolHandler.execute(request, "", "");
			return httpResponse;
		} catch (HttpException e) {
            logger.error("Fail with send POST request: ", e);
		} catch (IOException e) {
            logger.error("Fail with send POST request: ", e);
		} catch (Exception e){
            logger.error("Fail with send POST request: ", e);
		}
		
		return null;
	}

    public static HttpResponse sendPost(String url, NameValuePair[] nvp, String fileNameParam,
                                        String fileNamePath){
        if(url == null || url.equals(""))
            return null;

        HttpRequest request = new HttpRequest(HttpResultType.STRING);
        request.setUrl(url);
        request.setMethod(HttpRequest.METHOD_POST);

        if(nvp != null)
            request.setParameters(nvp);

        HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
        try {
            HttpResponse httpResponse = httpProtocolHandler.execute(request, fileNameParam, fileNamePath);
            return httpResponse;
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }
	
    public static HttpResponse sendPost(String url, Map<String, String> map){
		NameValuePair[] nvpArray = null;
		if(map != null && map.size() > 0){
			nvpArray = new NameValuePair[map.size()];
			int i = 0;
			for(String key : map.keySet()){
				NameValuePair nvp = new NameValuePair(key, map.get(key));
				nvpArray[i++] = nvp;
			}
		}
		
		return sendPost(url, nvpArray);
    }

    public static String sendPost(String url, String param) throws Exception{
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 開啟和URL之間的連線
            URLConnection conn = realUrl.openConnection();
            // 設定通用的請求屬性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            // 傳送POST請求必須設定如下兩行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 獲取URLConnection物件對應的輸出流
            out = new PrintWriter(conn.getOutputStream());
            // 傳送請求引數
            out.print(param);
            // flush輸出流的緩衝
            out.flush();
            // 定義BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw e;
        }
        // 使用finally塊來關閉輸出流、輸入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                logger.error(ex.getMessage(), ex);
                throw ex;
            }
        }
        return result;
    }
    
    /**
     * 向指定URL傳送GET方法的請求
     * 
     * @param url
     *            傳送請求的URL
     * @param param
     *            請求引數,請求引數應該是 name1=value1&name2=value2 的形式。
     * @return URL 所代表遠端資源的響應結果
     */
    public static String sendGetReuqest(String url, String param) throws Exception{
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 開啟和URL之間的連線
            URLConnection connection = realUrl.openConnection();
            // 設定通用的請求屬性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立實際的連線
            connection.connect();
            // 定義 BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream(),"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw e;
        }
        // 使用finally塊來關閉輸入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
            	logger.error(e2.getMessage(), e2);
                throw e2;
            }
        }
        return result;
    }
}

相關推薦

java傳送http請求獲取響應結果工具系列

import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.NameValuePair; import org.apache.log4j.Logger;

java伺服器端解決跨域問題工具系列

現在很多開發的API都支援ajax直接請求,這樣就會導致跨域的問題,解決跨域的問題一方面可以從前端,另一方面就是伺服器端。 既然是搞伺服器端,做對外的API服務,當然是做到越簡單越好,前端只需要傻傻的使用就好。 目前我接觸來的情況是有2種實現方

java傳送http請求獲取手機驗證碼

Maven <!--http --> <dependency> <groupId>org.apache.httpcomponents</groupId>

tomcat宕機自動重啟和每日定時啟動tomcat工具系列

在專案後期維護中會遇到這樣的情況,tomcat在記憶體溢位的時候就出現宕機的情況和遇到長時間不響應,需要人工手動關閉和重啟服務,針對這樣的突發情況,希望程式能自動處理問題而不需要人工關於,所以才有了目前的需求。 一、設定tomcat定時啟動 1,首先將tomcat註

CSV操作(匯出和匯入)工具系列

CSV的匯入匯出經常用在資料庫方面,比如在專案運作中,第三方的提供部分資料但是又不肯開放介面給呼叫者,他們只提供數 據庫片段資料然後以CSV的格式提供給使用者,所以這個時候就是用到CSV匯入匯出的功能了,再提一下CSV的匯入和匯出功能 和TXT的匯入匯出功能非常相似,下一

JAVA傳送HTTP請求(post、get),讀取HTTP響應內容,例項及應用

JDK中提供了一些對無狀態協議請求(HTTP)的支援,下面我就將我所寫的一個小例子(元件)進行描述: 首先讓我們先構建一個請求類(HttpRequester)。 該類封裝了JAVA實現簡單請求的程式碼,如下: import java.io.BufferedReader;

java 使用 okhttp傳送http請求獲取介面資料

為什麼需要使用okhttp: 目前我們學習的所有中只有html中的超連結和form表單才可以傳送http請求,另外一個就是ajx非同步傳送http請求獲取資料。 但是在實際開發需求中

Java傳送Http請求獲取狀態碼

通過Java傳送url請求,檢視該url是否有效,這時我們可以通過獲取狀態碼來判斷。 try { URL u = new URL("http://10.1.2.8:8080/fqz/page/qizha/pros_add.jsp"); tr

Java 傳送http請求

傳送GET方法的請求 /** * 向指定URL傳送GET方法的請求 * @param url 傳送請求的URL * @param param 請求引數,格式:name1=value1&name2=value2

Java傳送http請求(HttpClient)

public class HttpClientUtil { public static String doGet(String url, Map<String, String> param, String token) { // 建立Httpclient物件 Closeabl

Java 傳送http請求demo

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.U

java 傳送http請求獲得json 以及解析json

博主在做一款圖書app的後臺,最近遇到的一個需求: 前端向後端返回圖書的isbn碼,後端向前端返回該isbn對應圖書的資訊,例如書名、作者、出版社、簡介等。 後端實現的邏輯: 讀取isbn碼,判斷是否為空,為空則報錯 檢視資料庫是否有與該isbn匹配的圖

Java傳送Http請求,解析html返回

宣告:本文系JavaEye網站釋出的原創部落格文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任! 今天是2008年7月7日星期一,下午一直在學校做個人開始頁面。因為離不開google的翻譯,所以想把google的翻譯整合到我的開始頁面中來,於是乎就遇到了一個

java 傳送http請求 返回字串 再進行解析(略)

package taobao.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.InputStreamR

幾種方式的java傳送http請求的程式碼彙總

<span style="font-family: Arial, Helvetica, sans-serif;">import java.io.BufferedReader;</span>   import j

Java傳送Http請求工具

package com.core.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Print

java傳送http請求的四種方式

自己對知識的總結 4種分別可傳送get和post請求的方法, 第1種:HttpURLConnection、 第2種:URLConnection、 第3種:HttpClient,,HttpClient常

JAVA傳送http請求,呼叫http介面與方法

1.傳送POST請求,無引數名呼叫。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import

Java 傳送http請求,上傳檔案

package wxapi.WxHelper; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.F

java 傳送http請求以及請求引數值出現亂碼

一、傳送Http POST請求         public static String sendPost(String apiurl){                  String inputline = "";         // 建立url物件