最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)http的Post、Get、代理訪問請求

 更新時間:2016年01月07日 09:11:45   投稿:lijiao  
這篇文章主要為大家提供了java實現(xiàn)http的Post、Get、代理訪問請求的相關代碼,感興趣的小伙伴們可以參考一下

本文實例講解了java實現(xiàn)http的Post、Get、代理訪問請求的詳細代碼片段,分享給大家供大家參考,具體內(nèi)容如下

package com.snowfigure.kits.net;
 
import java.io.BufferedReader; 
import java.io.IOException;
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; 
import java.net.HttpURLConnection; 
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL; 
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
 
/** 
 * Http請求工具類 
 * @author snowfigure 
 * @since 2014-8-24 13:30:56 
 * @version v1.0.1 
 */
public class HttpRequestUtil {
  static boolean proxySet = false;
  static String proxyHost = "127.0.0.1";
  static int proxyPort = 8087;
  /** 
   * 編碼 
   * @param source 
   * @return 
   */ 
  public static String urlEncode(String source,String encode) { 
    String result = source; 
    try { 
      result = java.net.URLEncoder.encode(source,encode); 
    } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
      return "0"; 
    } 
    return result; 
  }
  public static String urlEncodeGBK(String source) { 
    String result = source; 
    try { 
      result = java.net.URLEncoder.encode(source,"GBK"); 
    } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
      return "0"; 
    } 
    return result; 
  }
  /** 
   * 發(fā)起http請求獲取返回結果 
   * @param req_url 請求地址 
   * @return 
   */ 
  public static String httpRequest(String req_url) {
    StringBuffer buffer = new StringBuffer(); 
    try { 
      URL url = new URL(req_url); 
      HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); 
  
      httpUrlConn.setDoOutput(false); 
      httpUrlConn.setDoInput(true); 
      httpUrlConn.setUseCaches(false); 
  
      httpUrlConn.setRequestMethod("GET"); 
      httpUrlConn.connect(); 
  
      // 將返回的輸入流轉換成字符串 
      InputStream inputStream = httpUrlConn.getInputStream(); 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
  
      String str = null; 
      while ((str = bufferedReader.readLine()) != null) { 
        buffer.append(str); 
      } 
      bufferedReader.close(); 
      inputStreamReader.close(); 
      // 釋放資源 
      inputStream.close(); 
      inputStream = null; 
      httpUrlConn.disconnect(); 
  
    } catch (Exception e) { 
      System.out.println(e.getStackTrace()); 
    } 
    return buffer.toString(); 
  } 
    
  /** 
   * 發(fā)送http請求取得返回的輸入流 
   * @param requestUrl 請求地址 
   * @return InputStream 
   */ 
  public static InputStream httpRequestIO(String requestUrl) { 
    InputStream inputStream = null; 
    try { 
      URL url = new URL(requestUrl); 
      HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); 
      httpUrlConn.setDoInput(true); 
      httpUrlConn.setRequestMethod("GET"); 
      httpUrlConn.connect(); 
      // 獲得返回的輸入流 
      inputStream = httpUrlConn.getInputStream(); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return inputStream; 
  }
   
   
  /**
   * 向指定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 的形式。
   * @param isproxy
   *        是否使用代理模式
   * @return 所代表遠程資源的響應結果
   */
  public static String sendPost(String url, String param,boolean isproxy) {
    OutputStreamWriter out = null;
    BufferedReader in = null;
    String result = "";
    try {
      URL realUrl = new URL(url);
      HttpURLConnection conn = null;
      if(isproxy){//使用代理模式
        @SuppressWarnings("static-access")
        Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));
        conn = (HttpURLConnection) realUrl.openConnection(proxy);
      }else{
        conn = (HttpURLConnection) realUrl.openConnection();
      }
      // 打開和URL之間的連接
       
      // 發(fā)送POST請求必須設置如下兩行
      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setRequestMethod("POST");  // POST方法
       
       
      // 設置通用的請求屬性
       
      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent",
          "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
       
      conn.connect();
       
      // 獲取URLConnection對象對應的輸出流
      out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
      // 發(fā)送請求參數(shù)
      out.write(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;
  }  
   
  public static void main(String[] args) {
    //demo:代理訪問
    String url = "http://api.adf.ly/api.php";
    String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";
     
    String sr=HttpRequestUtil.sendPost(url,para,true);
    System.out.println(sr);
  }
   
}

希望本文所述對大家學習java程序設計有所幫助。

相關文章

  • 手把手教你SpringBoot快速集成Swagger的配置過程

    手把手教你SpringBoot快速集成Swagger的配置過程

    這篇文章主要介紹了手把手教你SpringBoot快速集成Swagger的配置過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 如何使用Spring?Boot設置上傳文件大小限制

    如何使用Spring?Boot設置上傳文件大小限制

    上傳文件是互聯(lián)網(wǎng)中常應用的場景之一,最典型的情況就是上傳頭像等,下面這篇文章主要給大家介紹了關于如何使用Spring?Boot設置上傳文件大小限制的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • 解決springboot整合cxf啟動報錯,原因是版本問題

    解決springboot整合cxf啟動報錯,原因是版本問題

    這篇文章主要介紹了解決springboot整合cxf啟動報錯,原因是版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 使用jvm sandbox對三層嵌套類型的改造示例

    使用jvm sandbox對三層嵌套類型的改造示例

    這篇文章主要為大家介紹了使用jvm sandbox對三層嵌套類型的改造示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java 正則表達式入門詳解(基礎進階)

    Java 正則表達式入門詳解(基礎進階)

    最近看到很多同學想要學習java正則表達式的一些知識,那么腳本之家小編就為大家介紹一下,其實正則表達式實用性很強,處理大幅文字的時候都需要用得到,語法也大同小異
    2017-10-10
  • java 類加載與自定義類加載器詳解

    java 類加載與自定義類加載器詳解

    本文主要介紹了java 類加載與自定義類加載器。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • JDBC操作數(shù)據(jù)庫的增加、刪除、更新、查找實例分析

    JDBC操作數(shù)據(jù)庫的增加、刪除、更新、查找實例分析

    這篇文章主要介紹了JDBC操作數(shù)據(jù)庫的增加、刪除、更新、查找方法,以完整實例形式分析了Java基于JDBC連接數(shù)據(jù)庫及進行數(shù)據(jù)的增刪改查等技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Java中的模板模式說明與實現(xiàn)

    Java中的模板模式說明與實現(xiàn)

    這篇文章主要介紹了Java中的模板模式說明與實現(xiàn),模板方法模式,又叫模板模式,在一個抽象類公開定義了執(zhí)行它的方法的模板,它的子類可以更需要重寫方法實現(xiàn),但可以成為典型類中定義的方式進行,需要的朋友可以參考下
    2023-10-10
  • java后端如何獲取完整url的代碼

    java后端如何獲取完整url的代碼

    這篇文章主要介紹了java后端如何獲取完整url的代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 在SpringBoot項目中利用maven的generate插件

    在SpringBoot項目中利用maven的generate插件

    今天小編就為大家分享一篇關于在SpringBoot項目中利用maven的generate插件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論

威信县| 吴江市| 白玉县| 阜阳市| 东乌珠穆沁旗| 巴林右旗| 左贡县| 林西县| 钟祥市| 旬阳县| 田林县| 镇江市| 城固县| 海阳市| 石棉县| 曲靖市| 阳山县| 深水埗区| 水城县| 榆树市| 科尔| 玛纳斯县| 邵武市| 老河口市| 老河口市| 金寨县| 邵东县| 普格县| 中西区| 玉屏| 铅山县| 南丹县| 互助| 涞源县| 广平县| 平顺县| 鄂温| 九龙县| 德昌县| 江西省| 石楼县|