ਕਨੈਕਸ਼ਨ ਮੈਨੇਜਰ 'ਤੇ Apache HttpClient 5.5 ਦੀਆਂ SOCKS ਸੈਟਿੰਗਾਂ
HTTP ਪ੍ਰੌਕਸੀ ਰੂਟ ਜਾਂ ਕਸਟਮ ਸਾਕਟ ਫੈਕਟਰੀ ਦੀ ਥਾਂ SocketConfig ਨਾਲ ਪੂਲ ਦੀ ਸਾਕਟ ਨੀਤੀ ਕਨਫਿਗਰ ਕਰੋ।
Apache HttpClient 5.5 ਵਿੱਚ ਕਨੈਕਸ਼ਨ ਮੈਨੇਜਰ ਦੀਆਂ ਸਾਕਟ ਸੈਟਿੰਗਾਂ ਵਿੱਚ SOCKS ਕਨਫਿਗਰੇਸ਼ਨ ਦਾ ਰਾਹ ਸ਼ਾਮਲ ਹੈ। ਇਸਦਾ ਸੰਭਾਲਿਆ ਹੋਇਆ ਉਦਾਹਰਨ setSocksProxyAddress ਵਰਤਦਾ ਹੈ:
InetSocketAddress socks =
new InetSocketAddress("proxy.example.net", 1080);
PoolingHttpClientConnectionManager manager =
PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultSocketConfig(
SocketConfig.custom()
.setSocksProxyAddress(socks)
.build()
)
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(manager)
.build();
ਇਹ ਹਿੱਸਾ HttpClient 5 ਦੇ org.apache.hc ਪੈਕੇਜ ਅਤੇ HttpCore ਦੇ SocketConfig ਵਰਤਦਾ ਹੈ। ਇਸ ਕਲਾਇੰਟ ਨਾਲ ਕੀਤੀਆਂ ਬੇਨਤੀਆਂ ਉੱਪਰ ਕਨਫਿਗਰ ਕੀਤੇ ਪੂਲ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਮਾਲਕੀ ਘੇਰਾ ਖ਼ਤਮ ਹੋਣ 'ਤੇ ਕਲਾਇੰਟ ਬੰਦ ਕਰੋ।
ਵੈੱਬਸਾਈਟ ਦਾ ਅਸਲੀ URL ਆਮ ਵਾਂਗ ਬੇਨਤੀ 'ਤੇ ਰੱਖੋ। ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਤੋਂ ਬਿਨਾਂ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਸਾਈਟ ਬੇਨਤੀਆਂ ਲਈ SOCKS ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਉਮੀਦਵਾਰ ਪਤੇ ਦਿੰਦੀ ਹੈ; ਅਸਲ ਰਨਟਾਈਮ ਵੱਲੋਂ ਸਮਰਥਿਤ SOCKS ਸੰਸਕਰਣ ਚੁਣੋ। SOCKS ਪਤਾ ਉੱਥੇ ਪਹੁੰਚਣ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਟਰਾਂਸਪੋਰਟ ਨੂੰ ਕਨਫਿਗਰ ਕਰਦਾ ਹੈ; ਇਹ HttpHost ਵਜੋਂ ਦਿੱਤਾ ਗਿਆ HTTP ਫਾਰਵਰਡ-ਪ੍ਰੌਕਸੀ ਰੂਟ ਨਹੀਂ ਹੈ।
ਇਹ ਇਸ ਮੈਨੇਜਰ ਲਈ ਡਿਫਾਲਟ ਸਾਕਟ ਸੈਟਿੰਗਾਂ ਹਨ। ਪ੍ਰਤੀ-ਰੂਟ SocketConfig ਰਿਜ਼ੋਲਵਰ ਵਰਤਣ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਲੋੜੀਂਦੀ SOCKS ਸੈਟਿੰਗ ਉਸ ਨੀਤੀ ਰਾਹੀਂ ਲਾਗੂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਉਦਾਹਰਨ ਕਨੈਕਸ਼ਨ ਮੈਨੇਜਰ ਦੀ ਆਮ ਮੰਜ਼ਿਲ DNS ਨੀਤੀ ਬਣਾਈ ਰੱਖਦੀ ਹੈ; ਦੂਰਸਥ ਨਾਮ ਰਿਜ਼ੋਲਿਊਸ਼ਨ ਲਈ ਵੱਖਰੀ ਤੌਰ 'ਤੇ ਤਸਦੀਕਸ਼ੁਦਾ ਕਨਫਿਗਰੇਸ਼ਨ ਲੋੜੀਂਦੀ ਹੈ।