मैं एक साधारण एप्लिकेशन विकसित कर रहा हूं जो पोस्ट करने और सर्वर से डेटा प्राप्त करने के लिए https प्रोटोकॉल का उपयोग करता है। मैंने इंटरनेट पर खोज की लेकिन कुछ संसाधन उपलब्ध हैं, मैंने उनमें से अधिकांश की कोशिश की लेकिन इसे सफलतापूर्वक नहीं कर सका।पोस्ट करने और एंड्रॉइड में प्राप्त करने के लिए HttpsURLconnection
मैं साथ HttpClient यह सफलता थी की कोशिश की, लेकिन मैं HttpsURLConnection
के साथ क्या करना चाहते हैं मैं, डिवाइस से लोक RSA कुंजी लेने के लिए यदि ऐसा है तो मैं यह कैसे कर सकते हैं की जरूरत है।
क्या कोई मुझे बता सकता है कि मैं इसे httpsURLconnection
का उपयोग करके कैसे प्राप्त कर सकता हूं।
protected String doInBackground(String... arg0) {
try {
ByteArrayInputStream derInputStream = new ByteArrayInputStream(app.certificateString.getBytes());
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509","BC");
X509Certificate cert = (X509Certificate) certificateFactory.generateCertificate(derInputStream);
String alias = "alias";//cert.getSubjectX500Principal().getName();
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null);
trustStore.setCertificateEntry(alias, cert);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
kmf.init(trustStore, null);
KeyManager[] keyManagers = kmf.getKeyManagers();
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trustStore);
TrustManager[] trustManagers = tmf.getTrustManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers, trustManagers, null);
URL url = new URL("MY HTTPS URL");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(sslContext.getSocketFactory());
// set Timeout and method
conn.setReadTimeout(7000);
conn.setConnectTimeout(7000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
// Add any data you wish to post here
conn.connect();
String reult = String.valueOf(conn.getInputStream());
Log.d("connection : ", String.valueOf(reult));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
return null;
}
समय मैं त्रुटि हो रही हो रही है के अधिकांश:
Caused by: `java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.`
हो सकता है कि आपको यह त्रुटि संदेश की जाँच करते हैं? http://stackoverflow.com/questions/6825226/trust-anchor-not-found-for-android-ssl-connection –
क्या यह मदद करेगा? http://www.compiletimeerror.com/2013/01/login-plplication-for-android-android.html#.Vue4EOb35zl विशेष रूप से संख्या 4 इंगित करें? – Stallion
वॉली लाइब्रेरी का उपयोग करने का प्रयास करें। आशा करता हूँ की ये काम करेगा! –