2

я получаю IllegalArgumentException при попытке построить Apache HttpClient экземпляра остроумие HttpClientBuilder:Apache HttpClientBuilder - IllegalArgumentException

private CloseableHttpClient delegate; 

public DigestClient(String user, String pass) { 
    Credentials credentials = new UsernamePasswordCredentials(user, pass); 

    CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 
    credentialsProvider.setCredentials(AuthScope.ANY, credentials); 

    delegate = HttpClientBuilder.create() 
      .setDefaultCredentialsProvider(credentialsProvider) 
      .build(); 
} 

, что я получаю:

java.lang.IllegalArgumentException: Item may not be null 
     at org.apache.http.util.Args.notNull(Args.java:48) 
     at org.apache.http.config.RegistryBuilder.register(RegistryBuilder.java:58) 
     at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:727) 
     at com.example.app.data.net.DigestClient.<init>(DigestClient.java:51) 

Любые идеи, почему это происходит?

Вот мой Gradle с HttpClient-х версии:

compile 'org.apache.httpcomponents:httpclient-android:4.3.5' 

ответ

2

Я нашел решение здесь:

http://javacave.blogspot.com/2014/08/androidapache-httpclient.html

Для тех, кто не знает китайского языка:

Я должен был сделать:

SSLContext sslContext = SSLContexts.createSystemDefault(); 
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext); 

, а затем

delegate = HttpClients.custom() 
      .setDefaultCredentialsProvider(credentialsProvider) 
      .setSSLSocketFactory(sslsf) 
      .build(); 

По крайней мере, он не откажет этот путь.

+0

Благодарим Вас за предоставление этого исправления. Проблемы интерфейса интерфейса httpclient 4.3 вызывают некоторые действительно странные зависимости в Gradle. Пришлось переопределить мой HttpClientBuilder:
public class CustomBuilder extends HttpClientBuilder { @Override public CloseableHttpClient build() { setUserAgent(AndroidSendGridApi.USER_AGENT); useSystemProperties(); setSslcontext(SSLContexts.createSystemDefault()); return super.build(); } } bgs

7

Обновление httpclient-android версия фиксированной для меня:

compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1' 
+0

Это сработало для меня. –

Смежные вопросы