0

I am locked with a problem to call Freshdesk API from my Play 2.6 application, I created a library to do it using Retrofit and another class to do the same using Play WS but each option fails when I launched the process inside my Play application.

I tested my Retrofit client and create/delete operations worked perfect in my integration test.

This is my code to work with Play WS instead of Retrofit client.

public void create(String userEmail, String subject, String content) {

    // Obtain configuration using internal class and enumerations
    Config config = appService.getConfiguration(EConfig.FRESHDESK);

    JsonNode request = Json.newObject()
            .put("email", userEmail)
            .put("subject", subject)
            .put("description", content)
            .put("status", 2) // Fixed to "Open"
            .put("priority", 1); // Fixe to "Normal"

    CompletionStage<WSResponse> response = client.url(config.getString("url"))
        .setAuth(config.getString("token"), "X")
        .setContentType("application/json")
        .post(request);

    response.thenApply(wsResponse -> {

        System.out.println(wsResponse);

        return null;
    }).exceptionally(cause -> {

        logger.error("Error calling Freshdesk, this problem cannot be reported.", cause);

        return null;
    });

}

This is the stacktrace for Play WS call:

java.util.concurrent.CompletionException: java.net.ConnectException: Received fatal alert: internal_error
  at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
  at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
  at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
  at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
  at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
  at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
  at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
  at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
  at scala.concurrent.impl.CallbackRunnable.run$$$capture(Promise.scala:60)
  at scala.concurrent.impl.CallbackRunnable.run(Promise.scala)
Caused by: java.net.ConnectException: Received fatal alert: internal_error
  at play.shaded.ahc.org.asynchttpclient.netty.channel.NettyConnectListener.onFailure(NettyConnectListener.java:168)
  at play.shaded.ahc.org.asynchttpclient.netty.channel.NettyConnectListener$1.onFailure(NettyConnectListener.java:139)
  at play.shaded.ahc.org.asynchttpclient.netty.SimpleFutureListener.operationComplete(SimpleFutureListener.java:26)
  at play.shaded.ahc.io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:507)
  at play.shaded.ahc.io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:500)
  at play.shaded.ahc.io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:479)
  at play.shaded.ahc.io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:420)
  at play.shaded.ahc.io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:122)
  at play.shaded.ahc.io.netty.handler.ssl.SslHandler.notifyHandshakeFailure(SslHandler.java:1443)
  at play.shaded.ahc.io.netty.handler.ssl.SslHandler.setHandshakeFailure(SslHandler.java:1435)
Caused by: javax.net.ssl.SSLException: Received fatal alert: internal_error
  at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
  at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)
  at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634)
  at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1800)
  at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083)
  at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
  at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
  at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
  at play.shaded.ahc.io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:272)
  at play.shaded.ahc.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1175)
fjtorres
  • 266
  • 6
  • 13
  • There are too few details known to answer the question. Based on this error it might be some of several SSL problems or it might be that you are trying to use SSL on a server or port which is not setup for SSL at all. – Steffen Ullrich Oct 26 '18 at 12:25
  • The server is the same in all my tests: https://mydomain.freshdesk.com – fjtorres Oct 26 '18 at 14:20

1 Answers1

1

Finally the problem was my own mistake, when I wrote the endpoint URL in my configuration I did an spelling mistake.

fjtorres
  • 266
  • 6
  • 13