2014-04-21 13 views
10

उपयोग करने के लिए मैं निम्नलिखित कोड है, जो अभी भी संकलित किया था, लेकिन वे सभी बहिष्कृत कर रहे हैं:HttpClient 4.3.x, पदावनत कोड फिक्सिंग वर्तमान HttpClient कार्यान्वयन

SSLSocketFactory sslSocketFactory = new SSLSocketFactory(context, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
ClientConnectionManager clientConnectionManager = base.getConnectionManager(); 
SchemeRegistry schemeRegistry = clientConnectionManager.getSchemeRegistry(); 
schemeRegistry.register(new Scheme("https", 443, sslSocketFactory)); 
return new DefaultHttpClient(clientConnectionManager, base.getParams()); 

मैं इस भाग से बदलने के लिए मेरे सबसे अच्छे की कोशिश की कोड की:

HttpClientBuilder builder = HttpClientBuilder.create(); 
SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
builder.setConnectionManager(new BasicHttpClientConnectionManager()); 
builder.setSSLSocketFactory(sslConnectionFactory); 
return builder.build(); 

जैसा कि आप देख सकते हैं, वहाँ शीर्ष पद है कि मैं कैसे नए हिस्से पर शामिल करने के लिए पता नहीं है से कोड की कुछ लाइनों हैं। मैं आवश्यक कोड कैसे जोड़ सकता हूं, जैसे वैकल्पिक SchemeRegistry?

+0

खैर, SchemeRegistry की निंदा कहते हैं, "पदावनत। (4.3) रजिस्ट्री का उपयोग करें" – jedison

+0

मुझे लगता है कि पहले से ही पता है। मैं लुकअप मैप के बाद से 'रजिस्ट्री' का उपयोग कैसे करूं? –

उत्तर

13
HttpClientBuilder builder = HttpClientBuilder.create(); 
SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
builder.setSSLSocketFactory(sslConnectionFactory); 

Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() 
     .register("https", sslConnectionFactory) 
     .build(); 

HttpClientConnectionManager ccm = new BasicHttpClientConnectionManager(registry); 

builder.setConnectionManager(ccm); 

return builder.build(); 
+0

@ बुहके सिंडी क्या आपने मेरा जवाब आजमाया? – herau

+1

मैंने वास्तव में किया था। हालांकि मुझे परीक्षण करने की आवश्यकता होगी। –

+0

मेरे लिए यह कुछ हफ्तों से उत्पादन में काम करता है – herau

12

मैं अभी तक टिप्पणी नहीं कर सकता, लेकिन यहां हेराउ के जवाब में एक छोटा अपग्रेड है क्योंकि यह 4.4 के बाद से हटा दिया गया है, शायद कोई इसे उपयोगी लगेगा।

SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(context, NoopHostnameVerifier.INSTANCE); 
+0

मैं इस विरासत कोड, 'HttpPost अनुरोध = बातिल है,' ' HttpResponse प्रतिक्रिया = बातिल;' ' प्रतिक्रिया = client.execute (अनुरोध);' नीचे 'अनुरोध = नए HttpPost (वर) पर फिर ; ' इसके लिए प्रतिस्थापन क्या है? – Wax