10 Mayıs 2011 Salı

Httpclient ile proxy arkasından NTLM authentication kullanma

Httpclient ile web sayfalarını çağırmak istiyordum fakat şirketimde proxy vardı buda yetmiyormuş gibi birde Basic authentication yerine NTLM authentication ı kullanıyorlardı.Kısa bir araştırma sonrasında NTLM desteğinin apache kütüphanesine 4.1.1 versiyonunda geldiğini gördüm ve ilk olarak kütüphanemi güncelledim.Daha sonra setProxy metodumu aşağıdaki gibi değiştirdim.Sonuç bingo :)

public static void setProxy(String proxyHost, int proxyPort, String username, String password,String proxydomainname,String pcname,String pcdomainname) {

httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(proxyHost, proxyPort, proxydomainname),
new NTCredentials(username, password,pcname,pcdomainname)
);

setProxy(proxyHost, proxyPort);
}




public static void setProxy(String proxyHost, int proxyPort) {
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
}

apache httpclient kütüphanesini HTTPS ile kullanma

Merhaba,
yazdığım web crawl projesinde https siteleride dolaşmam gerekti ama varolan kütüphanede aşağıdaki hatayı alıyordum.

“javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”


ve aşağıdaki gibi bir sınıf yazdım.

daha sonrada var olan http client nesneme

httpclient = HttpClientSecureWrapper.wrapClient(httpclient);

diyerek yeni yeteneğini kazandırmış oldum.

Referans:
http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/