HttpClient模拟请求

来源:互联网 发布:金灿荣奚落公知视频 编辑:程序博客网 时间:2024/06/06 16:50

HttpClient

模拟使用POST请求

private static HttpClient httpClient = new HttpClient();private String loginUrlCode(String code, String cookie, String username, String password, String login_url) {    String flag = null;    try {        // 解决HTTP --> HTTPS        Protocol myHttps = new Protocol("https", new MySecureProtocolSocketFactory(), 443);        Protocol.registerProtocol("https", myHttps);        if ("true".equals(config.getUseProxy())) {            httpClient.getHostConfiguration().setProxy(config.getProxyHost(), NumberUtils.toInt(config.getProxyPort()));            logger.info("使用代理...");        }        // 绑定参数        org.apache.commons.httpclient.NameValuePair[] data = {                new org.apache.commons.httpclient.NameValuePair("username", username),                new org.apache.commons.httpclient.NameValuePair("password", password),                new org.apache.commons.httpclient.NameValuePair("captcha", code),                new org.apache.commons.httpclient.NameValuePair("auto_login", "1"),                new org.apache.commons.httpclient.NameValuePair("return", login_url),                new org.apache.commons.httpclient.NameValuePair("login_url", login_url)        };        PostMethod postMethod = new PostMethod(login_url);        postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "GBK");        postMethod.setRequestHeader("Cookie", cookie);        postMethod.setRequestBody(data);        int status = httpClient.executeMethod(postMethod);        logger.error("状态: status: " + status);        Cookie[] cookies = httpClient.getState().getCookies();        String captchaCookie = "";        for (Cookie c : cookies) {            captchaCookie += c.toString() + ";";        }        if (status == HttpStatus.SC_OK && (null != captchaCookie || !captchaCookie.equals(""))) {            flag = captchaCookie;        }        // 302        if (status == HttpStatus.SC_MOVED_TEMPORARILY) {            logger.error("getResponseBody: " + new String(postMethod.getResponseBody(), "UTF-8"));        }        postMethod.releaseConnection();    } catch (Exception e) {        e.printStackTrace();    }    return flag;}

模拟Get请求

GetMethod get = new GetMethod(url);get.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gb2312");// 模拟来源get.addRequestHeader("Referer","http://www.baidu.com");int statusCode = 0;try {    statusCode = httpClient.executeMethod(get);    if (statusCode == 200) {        BufferedReader br = new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream()));        String line = null;        StringBuffer sb = new StringBuffer();        while ((line = br.readLine()) != null) {            sb.append(line);        }        br.close();        return sb.toString();    } else {        throw new Exception(String.valueOf(statusCode));    }} catch (ConnectTimeoutException e1) {    throw new Exception("访问超时,url:" + url + ", statusCode:" + statusCode + ", statusText:" + ", message:" + e1.getMessage());} catch (Exception e) {    throw new Exception("请求失败,url:" + url + ", statusCode:" + statusCode + ", message:" + e.getMessage());} finally {    try {        get.releaseConnection();    } catch (Exception e) {        e.printStackTrace(System.out);    }}