Getting the included Apache HttpClient to connect with SSL

494 views
Skip to first unread message

Michael Purdy

unread,
May 29, 2015, 8:51:54 AM5/29/15
to rob...@googlegroups.com
For the following code, I am getting the error below. The URL, in this case just yahoo, redirects to an https connection. So, the code fails. The same happens with an explicit https URL, but works with a regular http that does not redirect to SSL (for example apple.com).

Is there something special that needs to be done to support SSL? I believe org.apache.http.client relies on JSSE, but that is supported via RoboVM's compilation process, correct?

public void sendGet() {
try {
 HttpClient client = newDefaultHttpClient();
HttpGet request = new HttpGet("http://www.yahoo.com");
HttpResponse response;

response =client.execute(request);

 BufferedReader br = new BufferedReader(newInputStreamReader(response.getEntity().getContent()));

 String returned = "";
 while ((returned = br.readLine()) != null) {
System.out.println(returned);

}
catch (Exception e){
e.printStackTrace();
}
}



Loading class 'java.util.logging.ConsoleHandler' failed

java.lang.ClassNotFoundException: java.util.logging.ConsoleHandler

java.lang.NullPointerException

at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:94)

at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:382)

at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)

at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:165)

at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)

at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)

at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)

at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)

at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

at MainWorker.sendGet(MainWorker.java:65)

at MyViewController.uploadButtonClicked(MyViewController.java:56)

at MyViewController.$cb$uploadButtonClicked(MyViewController.java)

at org.robovm.apple.uikit.UIApplication.main(Native Method)

at org.robovm.apple.uikit.UIApplication.main(UIApplication.java:368)

at MainClass.main(MainClass.java:20)

Niklas Therning

unread,
Jun 1, 2015, 5:10:00 AM6/1/15
to Michael Purdy, rob...@googlegroups.com
Try to add this to your robovm.xml:

<config>
  <forceLinkClasses>

    <!-- For http: support in URLConnection -->
    <pattern>com.android.okhttp.HttpHandler</pattern>

    <!-- For https: support in URLConnection -->
    <pattern>com.android.okhttp.HttpsHandler</pattern>
    <!-- OpenSSL is preferred over BouncyCastle. This pulls in full OpenSSL support. -->
    <pattern>com.android.org.conscrypt.**</pattern>
    <!-- We still need KeyStore.BKS and CertPathValidator.PKIX from BouncyCastle -->
    <pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std</pattern>
    <pattern>com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi</pattern>
    <!-- Use AndroidDigestFactoryOpenSSL as AndroidDigestFactory implementation -->
    <pattern>com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL</pattern>

  </forceLinkClasses>
</config>



--
You received this message because you are subscribed to the Google Groups "RoboVM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robovm+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages