Why is preemptive authentication required?

System.setProperty("httpclient.authentication.preemptive", "true");

I wrote web services that access client program in java. Where we were setting username and password in call object and that was working perfectly.

Recently, our service provider made some changes on their side and after that they were not receiving username & password from our web service calls and as they were not receiving username & password so we were not able to connect to their (provider) service.

Then I did googling and found about preemptive authentication. While calling web services we set httpclient.authentication.preemptive to true:

System.setProperty("httpclient.authentication.preemptive", "true");

then we are able to receive responses from our service provider.

When we remove the

System.setProperty("httpclient.authentication.preemptive", "true");

line then we are not able to connect to their services.

Edit
Report