| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
dw23
10年前发布

Java处理HTTP请求的相关代码

可以用于处理HTTP GET请求,POST请求,过滤HTML代码等

import java.io.BufferedReader;  import java.io.DataOutputStream;  import java.io.InputStreamReader;  import java.net.HttpURLConnection;  import java.net.URL;  import java.util.regex.Pattern;  /**   * Http操作辅助工具   *   * Get和Post两者在传递参数方式上有差异   *   * 1、Get: 把参数附加到url上,比如URL="http://www.abc.com?name=123&age=18"   * 2、Post:请求的url不变,但在content中加入参数,如 content="name=123&age=18",然后把content加入到post中   *   */  public class HttpTool {              /**       * GET请求数据       * @param get_url url地址       * @param content  key=value形式       * @return 返回结果       * @throws Exception       */      public String sendGetData(String get_url, String content) throws Exception {          String result = "";          URL getUrl = null;          BufferedReader reader = null;          String lines = "";          HttpURLConnection connection = null;          try {              if (content != null && !content.equals(""))                  get_url = get_url + "?" + content;                  //get_url = get_url + "?" + URLEncoder.encode(content, "utf-8");              getUrl = new URL(get_url);              connection = (HttpURLConnection) getUrl.openConnection();              connection.connect();              // 取得输入流,并使用Reader读取              reader = new BufferedReader(new InputStreamReader(connection                      .getInputStream(), "utf-8"));// 设置编码              while ((lines = reader.readLine()) != null) {                  result = result + lines;              }              return result;          } catch (Exception e) {              throw e;          } finally {              if (reader != null) {                  reader.close();                  reader = null;              }              connection.disconnect();          }      }              /**       * @param POST_URL url地址       * @param content  key=value形式       * @return 返回结果       * @throws Exception       */      public String sendPostData(String POST_URL, String content)              throws Exception {          HttpURLConnection connection=null;          DataOutputStream out=null;          BufferedReader reader=null;          String line = "";          String result="";          try {              URL postUrl = new URL(POST_URL);              connection= (HttpURLConnection) postUrl.openConnection();              connection.setDoOutput(true);//Let the run-time system (RTS) know that we want input              connection.setDoInput(true);//we want to do output.              connection.setRequestMethod("POST");                         connection.setUseCaches(false);// Post 请求不能使用缓存              connection.setInstanceFollowRedirects(true);              connection.setRequestProperty("Content-Type",//Specify the header content type.                      "application/x-www-form-urlencoded");              connection.connect();                              out = new DataOutputStream(connection.getOutputStream()); // Send POST output.                              // DataOutputStream.writeBytes将字符串中的16位的unicode字符变为utf-8的字符形式写道流里              //content = URLEncoder.encode(content, "utf-8");                              out.writeBytes(content);                              /**               * 如果url中带有多个key-value参数对,则采用下面的方式写到content中               * 正文内容其实跟get的URL中'?'后的参数字符串一致               *              String content =                  "name=" + URLEncoder.encode ("Hitesh Agrawal") +                  "&profession=" + URLEncoder.encode ("Software Engineer");              out.flush();              out.close(); */                              //获取结果              reader = new BufferedReader(new InputStreamReader(                      connection.getInputStream(), "utf-8"));// 设置编码              while ((line = reader.readLine()) != null) {                  result=result+line;              }                     return result;          } catch (Exception e) {              throw e;          }finally          {              if(out!=null)              {                  out.close();                  out=null;                             }              if(reader!=null)              {                  reader.close();                  reader=null;                             }              connection.disconnect();          }      }             /*       * 过滤掉html里不安全的标签,不允许用户输入这些符号       */      public static String htmlFilter(String inputString) {          //return inputString;            String htmlStr = inputString; // 含html标签的字符串            String textStr = "";            java.util.regex.Pattern p_script;            java.util.regex.Matcher m_script;                                         try {             String regEx_script = "<[s]*?(script|style)[^>]*?>[sS]*?<[s]*?/[s]*?(script|style)[s]*?>";             String regEx_onevent="on[^s]+=s*";             String regEx_hrefjs="href=javascript:";             String regEx_iframe="<[s]*?(iframe|frameset)[^>]*?>[sS]*?<[s]*?/[s]*?(iframe|frameset)[s]*?>";             String regEx_link="<[s]*?link[^>]*?/>";                           htmlStr = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");             htmlStr=Pattern.compile(regEx_onevent, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");             htmlStr=Pattern.compile(regEx_hrefjs, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");             htmlStr=Pattern.compile(regEx_iframe, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");             htmlStr=Pattern.compile(regEx_link, Pattern.CASE_INSENSITIVE).matcher(htmlStr).replaceAll("");                           //p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);            // m_html = p_html.matcher(htmlStr);            // htmlStr = m_html.replaceAll(""); // 过滤html标签                 textStr = htmlStr;                } catch (Exception e) {             System.err.println("Html2Text: " + e.getMessage());            }                return textStr;          }          public static void main(String[] args){          HttpTool ht = new HttpTool();          try {              ht.sendGetData("http://www.baidu.com", "");          } catch (Exception e) {              // TODO Auto-generated catch block              e.printStackTrace();          }      }  }