好用的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;
        }
    }
}

相关文章推荐

hfs好用的http下载工具

  • 2015年08月15日 21:18
  • 732KB
  • 下载

很好用的dos命令ftp,http工具

  • 2013年07月31日 21:26
  • 243KB
  • 下载

cocos2dx 3.x lua http请求网络图片,自己封装的,很好用,需要的可以看看

绑定了一个c++函数到lua,lua这边是这样调用的:    ---测试 http请求网络图片 的代码     local function HttpRequestCompleted(st...

U3D HTTP 最好用的插件BestHttp

简介我用的是1.6版,附百度云地址链接:http://pan.baidu.com/s/1dDzW4XN 密码:xz6aUnity用来和服务器通信可以用原生的WWW,但是WWW所提供的功能并不多,不能满...

U3D HTTP 最好用的插件BestHttp

个人还是比较推荐使用这个besthttp插件来做http等网络请求的,因为之前使用unity自带的www时遇到过unity的bug~ 简介 选择besthttp pro 1.7.8...

Python 最好用的第三方 http 库-Requests介绍

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT...
  • offbye
  • offbye
  • 2014年08月13日 10:23
  • 1415

分享一个android 访问http的类,非常好用哦

/** * 这个类是一个Http操作类 * @author liujing * */ public class MyHttpClient { /** * 通过HttpCli...

U3D HTTP 最好用的插件BestHttp

选择besthttp pro 1.7.8 版本 支持64位IL2CPP处理; http://download.csdn.NET/detail/kaitiren/9120539  Unity...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:好用的http工具
举报原因:
原因补充:

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