java代码设置代理

    xiaoxiao2022-07-12  124

    背景:解决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)