Splunk Dev

How to resolve error "URI can't be null" trying to establish a connection to a Splunk server using the Splunk Java SDK?

steelecomp99
Explorer

Attempting to establish a connection to a Splunk server using the Splunk Java SDK examples:

    // Create a map of arguments and add login parameters
    ServiceArgs loginArgs = new ServiceArgs();
    loginArgs.setUsername( "admin" );
    loginArgs.setPassword( "changeme1" );
    loginArgs.setHost( "localhost" );
    loginArgs.setPort( 8089 );

    // Create a Service instance and log in with the argument map
    Service service = Service.connect( loginArgs );

This code results in the following exception: java.lang.IllegalArgumentException: URI can't be null.
Does anyone know how to resolve this? Thank you

1 Solution

steelecomp99
Explorer

Figured it out. It was an issue with the Java version. I'm running Java 8, which requires the following method be called to set the SSLSecurityProtocol:

HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2 );

Then proceed with the required connection args per the SDK documentation. Please see the following post for more on this issue:
https://answers.splunk.com/answers/209379/no-appropriate-protocol-protocol-is-disabled-or-ci.html

View solution in original post

reubentellis85
New Member

I tried the following and it worked for me

           HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2 );

    ServiceArgs serviceArgs = new ServiceArgs();
    serviceArgs.setHost("mycompanySplunkServer.com");
    serviceArgs.setPort(8089);

    // Create a Service instance and log in with the argument map
    Service service = Service.connect(serviceArgs);
    service.login("MyUsername","MyPassword");
    System.out.println(service.getToken().toString());
0 Karma

steelecomp99
Explorer

Figured it out. It was an issue with the Java version. I'm running Java 8, which requires the following method be called to set the SSLSecurityProtocol:

HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2 );

Then proceed with the required connection args per the SDK documentation. Please see the following post for more on this issue:
https://answers.splunk.com/answers/209379/no-appropriate-protocol-protocol-is-disabled-or-ci.html

reubentellis85
New Member

I am getting the same issue and even after using the above line of code the problem is not solved.

I am using the remote server address to connect to Splunk using Java1.8 and Splunk jar version 1.6.2 with the below code.

           HttpService.setSslSecurityProtocol( SSLSecurityProtocol.TLSv1_2 );

    ServiceArgs serviceArgs = new ServiceArgs();
    serviceArgs.setUsername("Username");
    serviceArgs.setPassword("Password");
    serviceArgs.setHost("http://mycompanySplunkServer.com");
    serviceArgs.setPort(8089);

    service = Service.connect(serviceArgs);
0 Karma

kirillchokparov
Explorer
0 Karma

chrisx01
New Member

I downvoted this post because dosn't work

0 Karma

ddrillic
Ultra Champion

Almost an identiacal question at Connecting to Splunk via Java SDK, why am I getting error "java.lang.IllegalArgumentException: URI c...

The question there is -

-- I normally access Splunk using a url "mycompany.splunkcloud.com" and enter my credentials.
What about your case? what is the host?

The following also shows an exact code as yours - How to connect to Splunk Enterprise using the Splunk SDK for Java

0 Karma

steelecomp99
Explorer

ddrillic, thank you for your response. Yes, I realize the question is nearly identical, but the question you referenced remains unanswered. I asked it again with the hope of drawing attention to the issue. The Spunk SDK shows the exact code because that's where I got it from, and the way I'm using it isn't working. Perhaps, I am inputting the host name incorrectly.

My team's Splunk instance sits on an internal server, not on splunkcload.com. I am using the form "http://myCompanysServer.mycompany.com" as the host name. Any help is most appreciated.

0 Karma

ddrillic
Ultra Champion

Got it. From the server that hosts the Java code do you have connectivity to the Splunk server -

telnet <splunk host> 8089
0 Karma

steelecomp99
Explorer

Thanks,
Yes, I do have connectivity. Still no luck connecting via SDK

0 Karma
Get Updates on the Splunk Community!

Detecting Remote Code Executions With the Splunk Threat Research Team

WATCH NOWRemote code execution (RCE) vulnerabilities pose a significant risk to organizations. If exploited, ...

Enter the Splunk Community Dashboard Challenge for Your Chance to Win!

The Splunk Community Dashboard Challenge is underway! This is your chance to showcase your skills in creating ...

.conf24 | Session Scheduler is Live!!

.conf24 is happening June 11 - 14 in Las Vegas, and we are thrilled to announce that the conference catalog ...