好用的http工具

原创 2015年07月08日 16:01:14
package test;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import net.sf.json.JSONObject;


import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;




public class HttpUtils {
    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
    
    /**
     * url请求方法
     * @param urlStr url字符串
     * @param timeout 超时时间
     * @param sign 检测字符串
     * @return 如果url返回结果包含sign且不超时,则返回true,否则返回false
     */
    public static boolean webgetForCheck(String urlStr,int timeout,String sign){
        try{
            String content=webget(urlStr,timeout);
            if(StringUtils.isNotBlank(content)){
                return StringUtils.containsIgnoreCase(content, sign);
            }else if(StringUtils.isBlank(sign) && StringUtils.isBlank(content)){
                return true;
            }
        }catch(Exception e){
            log.error("webgetForCheck方法执行出现异常!",e);
        }
        return false;
    }
    
    /**
     * url请求
     * @param urlStr
     * @param timeout
     * @return
     * @throws IOException
     */
    public static String webget(String urlStr, int timeout) throws IOException {
        HttpURLConnection conn = null;
        InputStream is = null;
        StringBuffer sb = new StringBuffer();
        try {
            URL url = new URL(urlStr);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(timeout);
            conn.setReadTimeout(timeout);
            is = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String temp = "";
            while ((temp=reader.readLine())!=null) {
            sb.append(temp).append("\n");
}
            /*int ch = is.read();
            while (ch != -1) {
                sb.append((char) ch);
                ch = is.read();
            }*/
        } catch (IOException e) {
            log.error("在访问链接"+urlStr+"时,出现异常!",e);
            e = new IOException("1");
            throw e;
        } finally {
            if (conn != null) {
                conn.disconnect();
            }
            try {
                if (null != is)
                    is.close();
            } catch (IOException e) {
                e = new IOException("2");
                throw e;
            }
        }
        return sb.toString().trim();
    }
    
    /**
     * 发送带有表单参数的POST请求
     * 
     * @param requestUrl 请求的地址(不含参数)
     * @return 响应内容
     */
    @SuppressWarnings({ "finally", "unused" })
    public static String sendPostRequest(String requestUrl,String[] param,String[] values) {
        long responseLength = 0; // 响应长度
        String responseContent = null; // 响应内容
        HttpClient httpClient = new DefaultHttpClient(); // 创建默认的httpClient实例
        HttpPost httpPost = new HttpPost(requestUrl); // 创建HttpPost
        List<NameValuePair> formParams = new ArrayList<NameValuePair>(); // 创建参数队列
        for(int i =0;i<param.length;i++){
            String p = param[i];
            String v = values[i];
            formParams.add(new BasicNameValuePair(p,v));
        }
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(formParams, "UTF-8"));
            HttpResponse response = httpClient.execute(httpPost); // 执行POST请求
            HttpEntity entity = response.getEntity(); // 获取响应实体
            if (null != entity) {
                responseLength = entity.getContentLength();
                responseContent = EntityUtils.toString(entity, "UTF-8");
                EntityUtils.consume(entity); // Consume response content
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            httpClient.getConnectionManager().shutdown(); // 关闭连接,释放资源
            return responseContent;
        }
    }
}

模拟http 的请求工具汇总

最近在做服务器开发的项目,这个时候使用一款工具来模拟http 的请求就很有必要了 所以在此汇总模拟http 的请求工具如下: 1.httrprequst  2.loadrunner 3.pos...
  • liuhaomatou
  • liuhaomatou
  • 2016年07月22日 09:32
  • 2290

几款好用的比较工具

当我们需要比较两个文件,图片,程序等的差异的时候,我们需要用软件在进行比较,不如太耗时间尽力。但是现今网络上有着很多种文件比较工具,大家不知道那些比较好用。下面我们就来给大家介绍介绍几款好用的比较工具...
  • mathsoftware
  • mathsoftware
  • 2016年06月07日 13:52
  • 3223

十大好用的Linux实用工具推荐

本文我们收集了对Linux用户非常有用的10个工具,其中包括网络监控、系统审计或其它有用命令,这10个Linux工具可以帮助大家提高工作和使用效率,非常实用。 AD:51CTO 网+ 第十二期沙龙:...
  • u011596455
  • u011596455
  • 2016年11月20日 14:35
  • 871

说说自己在Windos下的所使用的SSH客户端工具

按照自己的从时间上的使用顺序来说。 第一个是SecureCRT: 为什么第一个使用的软件是 SecureCRT,在2008年,在学习嵌入式时,计算机与开发板连接是串口线连接的,当时书上说这...
  • yunying_si
  • yunying_si
  • 2014年03月27日 11:28
  • 1385

Mac下的几个好用的辅助工具

1.XtraFinder.dmg: 可以使Finder更加强大的一款软件,可以实现例如Windows上右键的粘贴、复制等一些列的功能,其他用法自己去慢慢接触… 链接:http://download...
  • qq_32239767
  • qq_32239767
  • 2017年09月22日 11:01
  • 142

向大家介绍一款非常好用的ssh工具finalshell,符合我们国人的使用习惯。

FinalShell 是一体化的的服务器,网络管理软件,功能强大的开发,运维工具,充分满足开发,运维需求. 访问 http://www.hostbuf.com/t/988.html ...
  • lfp424395537
  • lfp424395537
  • 2018年01月09日 10:14
  • 193

简单好用的HTTP分析的小工具httptrace

点击这里使用RSS订阅本Blog: 简单好用的http 分析的小工具 httptrace 旺财给的,用来做http协议分析的小工具,特别简单,适合我这种懒人。 推荐一把。 使用...
  • softwave
  • softwave
  • 2008年06月23日 22:36
  • 2579

mac下好用的ssh工具

1. SSH Shell 2.
  • buyueliuying
  • buyueliuying
  • 2017年07月19日 09:44
  • 1953

[工具]Mac下非常好用的快捷终端Dterm

DTerm A command line anywhere and everywhere 这是可在任何目录下直接用全局快捷键直接调出命令输入框的小工具,非常好用 作为Mac用户,使用终端是必须的...
  • ArthurChenJS
  • ArthurChenJS
  • 2011年11月08日 21:08
  • 4848

盘点国内外几款免费好用的远程桌面工具

通过远程桌面可以极大地方便我们进行远程技术支持、远程办公,然而我们熟知 QQ 远程、Windows自带的远程协助,使用起来并不理想,不是连接不顺畅就是操作技术高,相比之下,专门的远程桌面软件的体验更佳...
  • kekuihuazi
  • kekuihuazi
  • 2017年05月16日 16:22
  • 3077
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:好用的http工具
举报原因:
原因补充:

(最多只允许输入30个字)