java使用HttpClient模擬發(fā)送http的get尚粘、post請求

Http請求類

public class HttpRequest {
    /**
     * 向指定URL發(fā)送GET方法的請求
     * 
     * @param url
     *            發(fā)送請求的URL
     * @param param
     *            請求參數(shù)至扰,請求參數(shù)應該是 name1=value1&name2=value2 的形式罕伯。
     * @return URL 所代表遠程資源的響應結果
     */
    public static String sendGet(String url, String param) {
        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();
            // 獲取所有響應頭字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍歷所有的響應頭字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定義 BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("發(fā)送GET請求出現(xiàn)異常乾吻!" + e);
            e.printStackTrace();
        }
        // 使用finally塊來關閉輸入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定 URL 發(fā)送POST方法的請求
     * 
     * @param url
     *            發(fā)送請求的 URL
     * @param param
     *            請求參數(shù),請求參數(shù)應該是 name1=value1&name2=value2 的形式织阅。
     * @return 所代表遠程資源的響應結果
     */
    public static String sendPost(String url, String param) {
        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)");
            // 發(fā)送POST請求必須設置如下兩行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 獲取URLConnection對象對應的輸出流
            out = new PrintWriter(conn.getOutputStream());
            // 發(fā)送請求參數(shù)
            out.print(param);
            // flush輸出流的緩沖
            out.flush();
            // 定義BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("發(fā)送 POST 請求出現(xiàn)異常壳繁!"+e);
            e.printStackTrace();
        }
        //使用finally塊來關閉輸出流、輸入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
}

調(diào)用方法

 public static void main(String[] args) {
        //發(fā)送 GET 請求
        String s=HttpRequest.sendGet("http://localhost:8080/Home/RequestString", "key=123&v=456");
        System.out.println(s);
        
        //發(fā)送 POST 請求
        String sr=HttpRequest.sendPost("http://localhost:8080/Home/RequestPostString", "key=123&v=456");
        System.out.println(sr);
    }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荔棉,一起剝皮案震驚了整個濱河市氮趋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌江耀,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诉植,死亡現(xiàn)場離奇詭異祥国,居然都是意外死亡,警方通過查閱死者的電腦和手機晾腔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門舌稀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灼擂,你說我怎么就攤上這事壁查。” “怎么了剔应?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵睡腿,是天一觀的道長。 經(jīng)常有香客問我峻贮,道長席怪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任纤控,我火速辦了婚禮挂捻,結果婚禮上,老公的妹妹穿的比我還像新娘船万。我一直安慰自己刻撒,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布耿导。 她就那樣靜靜地躺著声怔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碎节。 梳的紋絲不亂的頭發(fā)上捧搞,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼胎撇。 笑死介粘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的晚树。 我是一名探鬼主播姻采,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爵憎!你這毒婦竟也來了慨亲?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤宝鼓,失蹤者是張志新(化名)和其女友劉穎刑棵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愚铡,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蛉签,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沥寥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍舍。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖邑雅,靈堂內(nèi)的尸體忽然破棺而出片橡,到底是詐尸還是另有隱情,我是刑警寧澤淮野,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布捧书,位于F島的核電站,受9級特大地震影響录煤,放射性物質(zhì)發(fā)生泄漏鳄厌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一妈踊、第九天 我趴在偏房一處隱蔽的房頂上張望了嚎。 院中可真熱鬧,春花似錦廊营、人聲如沸歪泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呐伞。三九已至,卻和暖如春慎式,著一層夾襖步出監(jiān)牢的瞬間伶氢,已是汗流浹背趟径。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留癣防,地道東北人蜗巧。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像蕾盯,于是被迫代替她去往敵國和親幕屹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容