必威体育Betway必威体育官网
当前位置:首页 > IT技术

Java 程序中设置代理访问外网

时间:2019-08-13 02:13:20来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

外网代理

背景

在调试本地程序的时候,如果需要访问Google,youtube,aptoide等网站的时候,是需要访问外网的。和直接在浏览器中访问不同,在浏览器中我们只需要挂代理就可以了。但是在程序中,我们需要在Http请求头中添加请求头的代理信息。那么应该如何处理呢?

实际应用

首先需要在本地装好代理,可以使用shadowsocks代理。在本地设置好了代理以后,那么就需要在程序中为Http请求设置好代理信息,也就是proxy信息。具体的程序可以参考以下的内容

 /** 默认字符集 **/
    private static final String                             DEFAULT_CHARSET            = "UTF-8";

    /** 读超时 **/
    //private static final int                                socket_TIMEOUT             = 12000;
    private static final int                                SOCKET_TIMEOUT             = 40000;
    /** 连接超时 **/
    private static final int                                CONNECT_TIMEOUT            = 8000;
    //private static final int                                CONNECT_TIMEOUT            = 16000;
    /** 从连接池获取连接超时 **/
    private static final int                                CONNECTION_request_TIMEOUT = 2000;

    /** 超时设置 **/
    private static final RequestConfig                      REQUEST_CONFIG             = RequestConfig
            .custom().setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT)
            .setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
    
    
    /**连接代理超时设置**/
     private static final RequestConfig  REQUEST_CONFIG_PROXY=RequestConfig
             .custom().setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT)
             .setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).setProxy( new HttpHost("127.0.0.1",1080)).build();
/**
     * Aptoide  get请求参数处理
     * @param method
     * @param url
     * @param params
     * @param charset
     * @return
     */
    private static Httpresponse executeAptoide(HttpMethod method, String url, Map<String, String> params,
                                        String charset) {

        HttpRequestBase req = (method == HttpMethod.GET) ? assembleAptoideGet(url, params, charset)
                : assemblePost(url, params, charset);
        
        if(url.trim().startsWith("http://ws75.aptoide.com")){
            req.setConfig(REQUEST_CONFIG_PROXY);
        }else{
            req.setConfig(REQUEST_CONFIG);
        }

        CloseableHttpResponse response = null;
        try {

            response = HTTP_CLIENT.execute(req);
            HttpEntity entity = response.getEntity();
            byte[] data = EntityUtils.toByteArray(entity);
            return new HttpResponse(response.getStatusLine().getStatusCode(), data,
                    charset == null ? null : new String(data, charset));
        } catch (SocketTimeoutException e) {
            return new HttpResponse(HttpStatus.SC_GATEWAY_TIMEOUT, e);
        } catch (ConnectTimeoutException e) {
            return new HttpResponse(HttpStatus.SC_BAD_GATEWAY, e);
        } catch (IOException e) {
            return new HttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, e);
        } finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                }
            }
        }
    }

相关阅读

java反射(特别通俗易懂)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文

如何阅读Java源码?

阅读Java源码的

【转载】java中int转string,string转int 及其效率对比

尊重原创,原文传送门string转int,两种方法:1、Interger.parseInt(String)2、Interger.valueOf(String).intValue()第二种方法可以去

【CSS】如何设置行距、段落间距、缩进格式

在使用MarkDownHere的时候,需要利用CSS编辑各个段落的格式,本文记录了CSS中编辑格式的各个属性及其设置。 行距 行距一般使用line-h

Java的常用开发工具

Java开发者推荐的几种常用工具,Java程序员最喜欢的几款IDE编辑器 这篇文章主要为大家详细介绍了Java开发者推荐的10种常用工具,具

分享到:

栏目导航

推荐阅读

热门阅读