`

模拟firefox浏览器插件poster的get方式请求

    博客分类:
  • java
阅读更多

package com.whty.sub.util;

import java.io.IOException;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

/**
 * HTTP CLIENT 工具类
 *
 * @author cjq
 */
public class HttpClientUtil {

    private static final String ENCODE_CHARSET_UTF8 = "UTF-8";

    /**
     *@Title: get
     *@Description: TODO(模拟firefox浏览器插件poster的get方式请求)
     *@Author: hxf
     *@param getUrl
     *            请求服务地址
     *@param msTimeout
     *            超时时间
     *@param ip
     *            被请求服务的IP地址
     *@param port
     *            被请求服务的端口号
     *@param user
     *            鉴权通过的用户名
     *@param password
     *            用户密码
     *@return String
     */
    public static String get(String getUrl,Integer msTimeout,String ip,int port,String user,String password) throws Exception{
        MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager ();
        // 设置超时时间
        connectionManager.getParams ().setConnectionTimeout (msTimeout);
        HttpClient httpClient = new HttpClient (connectionManager);
        // 设置被请求服务的ip和端口
        httpClient.getHostConfiguration ().setHost (ip, port);
        GetMethod postMethod = new GetMethod (getUrl);
        httpClient.getParams ().setAuthenticationPreemptive (true);
        // 设置鉴权通过的用户名和密码
        httpClient.getState ().setProxyCredentials (AuthScope.ANY, new UsernamePasswordCredentials (user,password));
        try {
            List<Header> headers = new ArrayList<Header> ();
            headers.add (new Header ("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"));
            headers.add (new Header ("Authorization","Basic ZG9tYWluX3VzZXI6ZG9tYWluX3VzZXI="));
            headers.add (new Header ("Accept-Encoding","gzip, deflate"));
            headers.add (new Header ("Accept-Language","zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"));
            headers.add (new Header ("Connection","keep-alive"));
            headers.add (new Header ("User-Agent","Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1"));
            httpClient.getHostConfiguration ().getParams ().setParameter ("http.default-headers", headers);
            postMethod.getParams ().setParameter (HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler (1,false));
            postMethod.getParams ().setParameter (HttpMethodParams.HTTP_CONTENT_CHARSET, ENCODE_CHARSET_UTF8);
            postMethod.getParams ().setParameter (HttpMethodParams.HTTP_URI_CHARSET, ENCODE_CHARSET_UTF8);
            postMethod.getParams ().setParameter (HttpMethodParams.SO_TIMEOUT, msTimeout);
            Integer status = httpClient.executeMethod (postMethod);
            if (status == 200) {
                return postMethod.getResponseBodyAsString ();
            } else {
                throw new Exception (String.format ("Invoke remote server address %1$s error, return status = %2$s!", getUrl, status));
            }
        } catch (HttpException e) {
            throw new Exception (String.format ("Invoke remote server address %1$s error!", getUrl),e);
        } catch (IOException e) {
            throw new Exception (String.format ("Invoke remote server address %1$s error!", getUrl),e);
        } finally {
            postMethod.releaseConnection ();
        }
    }
   
    @SuppressWarnings("deprecation")
    public static String post(String requeString,String postUrl,Integer msTimeout) throws Exception{
        MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager ();
        connectionManager.getParams ().setConnectionTimeout (msTimeout);
        HttpClient httpClient = new HttpClient (connectionManager);
        PostMethod postMethod = new PostMethod (postUrl);
        httpClient.getState ().setProxyCredentials (AuthScope.ANY, new UsernamePasswordCredentials ("domain_user","domain_user"));
        try {
            List<Header> headers = new ArrayList<Header> ();
            headers.add (new Header ("Content-Type","text/xml; charset=" + ENCODE_CHARSET_UTF8));
            httpClient.getHostConfiguration ().getParams ().setParameter ("http.default-headers", headers);
            postMethod.setRequestBody (requeString);
            postMethod.getParams ().setParameter (HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler (1,false));
            postMethod.getParams ().setParameter (HttpMethodParams.HTTP_CONTENT_CHARSET, ENCODE_CHARSET_UTF8);
            postMethod.getParams ().setParameter (HttpMethodParams.HTTP_URI_CHARSET, ENCODE_CHARSET_UTF8);
            postMethod.getParams ().setParameter (HttpMethodParams.SO_TIMEOUT, msTimeout);
            Integer status = httpClient.executeMethod (postMethod);
            if (status == 200) {
                return postMethod.getResponseBodyAsString ();
            } else {
                throw new Exception (String.format ("Invoke remote server address %1$s error, return status = %2$s!", postUrl, status));
            }
        } catch (HttpException e) {
            throw new Exception (String.format ("Invoke remote server address %1$s error!", postUrl),e);
        } catch (IOException e) {
            throw new Exception (String.format ("Invoke remote server address %1$s error!", postUrl),e);
        } finally {
            postMethod.releaseConnection ();
        }
    }

   

}

分享到:
评论

相关推荐

    poster-3.1.0

    在开发WEB程序的时候,经常需要模拟http请求,接收服务器响应...Firefox插件poster,可以模拟各种http请求,并详细设置请求参数,比如http header,parameter等。 --2020年05月11日更新:火狐跟谷歌已经屏蔽了这个插件

    Firefox火狐浏览器官方58.0b14-win32版本exe在线安装包

    标题中的“Firefox火狐浏览器官方58.0b14-win32版本exe在线安装包”指的是Mozilla Firefox的58.0b14版本,这是一个适用于Windows 32位操作系统的浏览器更新。这个版本属于Firefox的β(Beta)测试版,意味着它在正式...

    poster-3.1.0-fx

    poster-3.1.0-fx Poster 3.1.0.1-signed 0人参与评分 0 在用 | 0 用过 作者: Alex Milowski 适用:Firefox 1.5 - 26.* 系统:Linux, Mac, Windows ...适用于火狐43版本,截止到2016-01-18最新的poster插件

    WordPress文章分享海报插件:WP-Poster

    WP-Poster是一款免费的WordPress文章分享海报插件,即使是小白也能够轻松使用,如果你想为网站添加一个文章分享海报功能,直接下载插件使用即可。Canvas绘图,非php后端生成,节省服务器资源,安卓系统中个别机型在...

    FIREFOX 52.0.2 渗透便携版 BETA8

    插件列表: Cookies Manager+ Firebug Flagfox Groundspeed hackbar 1.6.5 版本俄罗斯黑客r0oth3x49升级了很多新功能! https://addons.mozilla.org/zh-CN/firefox/addon/hackbar1/ Httpsfox JSONView Live ...

    Poster工具

    这款工具的设计理念与火狐浏览器中的Poster插件相似,旨在提供一个直观且高效的测试环境。 Post方法是HTTP协议中用于向服务器提交数据的一种方式,通常用于创建新的资源。在 Poster工具中,你可以构造POST请求,...

    httpRequester插件的安装

    该httpRequester适用于firefox5.6以下,可以用于http的get、poster等方式的测试,安装方法 1、安装firefox5.6以下版本 2、安装完毕,点击菜单,找到附加组件 3、在附加组件页面的搜索框左边有个按钮 4、选择 从...

    Firefox Setup 51.0b14.exe

    Firefox Setup 51.0b14,为什么上传这个版本,因为poster插件、json format插件在更新的版本无法安装,我得到的是这个结果。

    火狐Firefox 46.0.zip

    火狐浏览器全插件版,hackbar,agent47,cookies manager,disable webrtc,firebug,flagfox,foxyproxy standard,groupspeed,httpfox,js switch,jsonview,live http headers,modify headers,poster,sql inject me,

    Firefox-46.0-渗透测试版

    一款好的渗透测试浏览器插件可以大大提高我们渗透测试的效率,那么作为渗透测试人员,我们是否有一些不可或缺的浏览器插件呢 ...Firefox-46.0-渗透测试版省去了我们下载插件所带来的麻烦,提高了我们的效率。

    httprequster.rar

    该httpRequester适用于firefox5.6以下,可以用于http的get、poster等方式的测试,安装方法 1、安装firefox5.6以下版本 2、安装完毕,点击菜单,找到附加组件 3、在附加组件页面的搜索框左边有个按钮 4、选择 从文件...

    vue-canvas-poster 海报合成

    Canvas API 提供了在浏览器中绘制2D图像的能力,包括绘图、填充、描边、渐变、阴影等。在这个组件中,Canvas被用来合成海报的各个元素,比如图片、文字、二维码等。Vue与Canvas的结合,意味着可以通过Vue的数据绑定...

    python2 poster 模块

    Python2的poster模块是一个用于处理HTTP POST请求的工具,尤其适用于上传大文件。这个模块使得在Python2环境中,开发者能够方便地实现文件的分块上传,这对于处理大文件的网络传输至关重要,因为一次性上传大文件...

    学术会议模板大量poster

    在学术界,有效的交流是至关重要的,而poster作为科研成果的一种直观展示方式,常常在学术会议上扮演着举足轻重的角色。"学术会议模板大量poster"这个资源集合为研究人员提供了丰富的设计灵感和实用工具,帮助他们更...

    学术会议poster模板

    在学术交流中,海报(Poster)是一种常见的展示方式,它能直观、简洁地传达研究内容。本资源集合提供了一款“学术会议poster模板”,适用于各领域的学者和研究人员使用。通过PowerPoint(PPT)这种易操作的软件,您...

    SpringBoot构建Restful service完成Get和Post请求

    其中,Get和Post请求是最基本也是最常用的两种请求方式。本文将主要介绍如何使用SpringBoot构建Restful service完成Get和Post请求。 一、Get请求 Get请求是HTTP请求中最常用的方法之一,用于从服务器端获取数据。...

    chrome_poster

    之前一直找不到的插件,火狐的插件库也没搜到,下载麻烦,转存一下 最后更新时间2015年

    Poster Printer中文绿色便携版

    Poster Printer即以前的ProPoster,是一款制作海报风格图片的软件,适合制作、打印大尺寸海报、标识、签名等,它支持多种图像格式,能制作最大228.6x312.97cm的大幅海报. 使用起来也非常简单,直接载入图片,然后...

Global site tag (gtag.js) - Google Analytics