java代码设置代理

背景:解决java http from 请求出了问题,需要监控请求查看一下,相关参数设置;我下载了fiddler5 来抓取包信息,发现无法抓取,经过百娘发现,fiddler5无法拦截到java 的请求;需要配置代理;  fiddler5默认监控配置是8888端口,所以需要设置java代理;网上说修改java启动设置,我没有弄出来;所以我使用的是将代理放到请求里面,这样是通过代码设置代理;这样可以根据需要去设置请求代理。

相关的包)

核心代码:

        HttpPost pos = new HttpPost(url+"?date="+(new Date().getTime()));
        //端口 和 ip 可以根据需要自行修改,我这是抓包需要 设置为8888
		RequestConfig defaultRequestConfig = RequestConfig.custom()
				.setSocketTimeout(5000)
				.setConnectTimeout(5000)
				.setConnectionRequestTimeout(5000)
				.setStaleConnectionCheckEnabled(true)
				.build();
		RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
			    .setProxy(new HttpHost("127.0.0.1", 8888)) 
			    .build();
		pos.setConfig(requestConfig);

我的代码:

        CookieStore cookieStore = new BasicCookieStore();
        //设置cookie
        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", jsessionin); 
        cookie.setVersion(0);  
        cookie.setDomain("/");   //设置范围
        cookie.setPath("/"); 
        cookieStore.addCookie(cookie);
        
        CloseableHttpClient httpclient = HttpClients.custom()
    			.setDefaultCookieStore(cookieStore).build();
    	log.debugger("判定为【中国证券投资基金业协会】使用httpclient-4.5 --------->>>>>");
        //CloseableHttpClient httpclient = HttpClients.createDefault();
        MultipartEntityBuilder reqEntity=MultipartEntityBuilder.create();
        //设置模拟浏览器的上传格式
        reqEntity.setMode(HttpMultipartMode.RFC6532);
        //文件参数
        if (file != null) {
			for (Map.Entry<String, File> enetiy : file.entrySet()) {
				log.debugger("添加参数文件域参数" + enetiy.getKey());
				reqEntity.addBinaryBody(enetiy.getKey(), enetiy.getValue(),ContentType.DEFAULT_BINARY, enetiy.getValue().getName());
				 //reqEntity.addBinaryBody(enetiy.getKey(), new
				 //File("D:\\TOZQSBNAV20170801.txt"),ContentType.TEXT_PLAIN,"TOZQSBNAV20170801.txt");
						//Content-Type: application/vnd.ms-excel
			}
		} 
        // 添加上传参数
 		if (param != null) {
 			for (Map.Entry<String, String> enetiy : param.entrySet()) {
 				log.debugger("添加上传普通参数" + enetiy.getKey() + "<---->" + enetiy.getValue());
 				reqEntity.addTextBody(enetiy.getKey(), enetiy.getValue());

 			}
 		}
        //组装url
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(url+"?date=");
        stringBuilder.append((new Date().getTime()));
        log.debugger("组装的url:" + stringBuilder.toString());
        
        //设置代理
        RequestConfig defaultRequestConfig = RequestConfig.custom()
				.setSocketTimeout(5000)
				.setConnectTimeout(5000)
				.setConnectionRequestTimeout(5000)
				.setStaleConnectionCheckEnabled(true)
				.build();
		RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
			    .setProxy(new HttpHost("127.0.0.1", 8888))
			    .build();
		//pos.setConfig(requestConfig);
        
        //设置发送请求参数
        HttpUriRequest request = RequestBuilder.post(stringBuilder.toString()).setEntity(reqEntity.build()).setConfig(requestConfig).build();

        System.out.println("请求参数 request: " + request.getRequestLine());
        
        ResponseHandler<String> responseHandler = new BasicResponseHandler();  

        //执行请求
        log.debugger("开始上传---------->>>>>" + stringBuilder.toString());
        String responseBody = httpclient.execute(request, responseHandler);
        log.debugger("执行完成---------->>>>>");
        log.debugger("返回参数:"+responseBody);
        return responseBody;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值