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!

Webinar Recap | Revolutionizing IT Operations: The Transformative Power of AI and ML ...

The Transformative Power of AI and ML in Enhancing Observability   In the realm of IT operations, the ...

.conf24 | Registration Open!

Hello, hello! I come bearing good news: Registration for .conf24 is now open!   conf is Splunk’s rad annual ...

ICYMI - Check out the latest releases of Splunk Edge Processor

Splunk is pleased to announce the latest enhancements to Splunk Edge Processor.  HEC Receiver authorization ...