How can I specify the local address on a java.net.URLConnection?

后端 未结 4 1225
名媛妹妹
名媛妹妹 2020-12-01 06:50

My Tomcat instance is listening to multiple IP addresses, but I want to control which source IP address is used when opening a URLConnection.

How can I

4条回答
  •  抹茶落季
    2020-12-01 07:26

    Setting manually socket work fine ...

    private HttpsURLConnection openConnection(URL src, URL dest, SSLContext sslContext)
            throws IOException, ProtocolException {
        HttpsURLConnection connection = (HttpsURLConnection) dest.openConnection();
        HttpsHostNameVerifier httpsHostNameVerifier = new HttpsHostNameVerifier();
        connection.setHostnameVerifier(httpsHostNameVerifier);
        connection.setConnectTimeout(CONNECT_TIMEOUT);
        connection.setReadTimeout(READ_TIMEOUT);
        connection.setRequestMethod(POST_METHOD);
        connection.setRequestProperty(CONTENT_TYPE, SoapConstants.CONTENT_TYPE_HEADER);
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setSSLSocketFactory(sslContext.getSocketFactory());
        if ( src!=null ) {
            InetAddress inetAddress = InetAddress.getByName(src.getHost());
            int destPort = dest.getPort();
            if ( destPort <=0 ) 
                destPort=SERVER_HTTPS_PORT;
            int srcPort = src.getPort();
            if ( srcPort <=0 ) 
                srcPort=CLIENT_HTTPS_PORT;
             connectionSocket = connection.getSSLSocketFactory().createSocket(dest.getHost(), destPort, inetAddress, srcPort);
        }
        connection.connect();
        return connection;
    }    
    

提交回复
热议问题