शुभ दिन!java.lang.No.SuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE
मुझे मदद चाहिए!
मैं आईआईएस (शेयरपॉइंट) के एकीकरण के साथ एंड्रॉइड के लिए ऐप विकसित करता हूं। और जब मैं इस कोड (कोड 2) चलाने के लिए, मैं मिलता है त्रुटि
java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE
मैं विधि onCreate में firstActivity में इस कोड (कोड 1) चलाने
संस्करण httpclient - 4.3;
कोड 1
new Thread(new Runnable() {
@Override
public void run() {
new HttpsClietn();
}
}).run();
कोड 2
package com.example.HttpsMy;
import android.os.Environment;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class HttpsClietn {
HttpsClietn() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException, IOException, CertificateException, UnrecoverableKeyException {
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new NTCredentials("Grigoriy.Polyakov","password", "", "domain.kz"));
HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
HttpGet httpget = new HttpGet("https://serveer.domain.kz");
HttpClient client = HttpClientBuilder.create()
.setSSLSocketFactory(getFactory())
.setDefaultCredentialsProvider(credsProvider)
.setSslcontext(getContext())
.build();
System.out.println(client.execute(httpget,context).getStatusLine());
}
SSLContext getContext() throws NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException, CertificateException, UnrecoverableKeyException {
//new File("key/keystore.p12"), "1234"
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream keyInput = new FileInputStream(new File(Environment.getExternalStorageDirectory().getPath()+"/kvv/keystore.p12"));
keyStore.load(keyInput, "1234".toCharArray());
keyInput.close();
keyManagerFactory.init(keyStore, "1234".toCharArray());
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), trustAllCerts, new SecureRandom());
return context;
}
SSLConnectionSocketFactory getFactory() throws CertificateException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException, IOException {
return new SSLConnectionSocketFactory(getContext());
}
}
किसी भी मदद के लिए धन्यवाद।
धन्यवाद अपने build.gradle फ़ाइल में
जोड़ने! अगर मैं httpclient – G1yyK
@ G1yyK को पुन: संकलित नहीं करता हूं, तो मैं नेमस्पेस को बदल सकता हूं (इसे दूसरों को डीआईआर में ले जाएं): यह एक अलग सवाल है, जिसका उत्तर पहले से ही एक से अधिक अवसरों पर दिया गया है। वैसे भी, मैंने अपने मूल उत्तर में एक और अनुभाग जोड़ा, जिसमें रिकैकिंग विकल्पों के विवरण हैं। – oleg
मैं एक बहुत ही समान मुद्दे पर आया था। HttpClient को दोबारा बनाने का वास्तव में क्या मतलब है और मैं इसे कैसे कर सकता हूं (मैंने इसे देखने की कोशिश की लेकिन इसे करने के तरीके पर कोई मार्गदर्शिका नहीं है - कम से कम मुझे एक नहीं मिला) –