可以用于处理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();
- }
- }
- }
来源: http://www.phpxs.com/code/1002131/