1

I am using salesforce soap API i has activated tls 1.1 in SF-->Critical updates

i am getting this error

UNSUPPORTED_CLIENT: TLS 1.0 has been disabled in this organization. Please use TLS 1.1 or higher when connecting to Salesforce using https.

I am using java 7 update 79. My sample code for testing TLS.

public class TestSaleforce {
    public static void main(String[] args) throws UnexpectedErrorFault, ApiFault {
        // TODO Auto-generated method stub
        String username = "abc";
        String password = "abc";
        String authEndPoint = "https://tls1test.salesforce.com/services/Soap/u/35.0/";
        try {
            /* ConnectorConfig config = new ConnectorConfig();
              config.setUsername(username);
              config.setPassword(password);       
         */
            System.out.println("AuthEndPoint: " + authEndPoint);
            //config.setAuthEndpoint(authEndPoint);
            SoapBindingStub binding = null;
            binding = (SoapBindingStub) new SforceServiceLocator().getSoap();
            binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, authEndPoint);
            LoginResult rs = null;
            rs = binding.login(username, password);
            // Print user and session info
            GetUserInfoResult userInfo = rs.getUserInfo();
            System.out.println("UserID: " + userInfo.getUserId());
            System.out.println("User Full Name: " + userInfo.getUserFullName());
            System.out.println("User Email: " + userInfo.getUserEmail());
            System.out.println(rs.getServerUrl() + rs.getSessionId());
            //  System.out.println("SessionID: " + config.getSessionId());
            // System.out.println("Auth End Point: " + config.getAuthEndpoint());
            // System.out.println("Service End Point: " + config.getServiceEndpoint());
            binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY, rs.getServerUrl());
            SessionHeader sh = new SessionHeader();
            sh.setSessionId(rs.getSessionId());
            binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "SessionHeader", sh);
            QueryOptions qo = new QueryOptions();
            System.out.println(new Date() + " SETTING Query Batch Size");
            qo.setBatchSize(new Integer(2000));
            binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "QueryOptions", qo);
            QueryResult qResult = null;
            String soqlQuery = "select RecordType.Name,Email,HasOptedOutOfEmail,Owner.Name,Owner.Email,BMS__leadOpp__r.Name,Id from lead WHERE (RecordType.Name='') AND IsConverted=FALSE";
            qResult = binding.query(soqlQuery);
            boolean done = false;
            if (qResult.getSize() > 0) {
                System.out.println("Logged-in user can see a total of " + qResult.getSize() + " contact records.");
            }
        } catch (RemoteException | ServiceException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

And other thing i wanted to add is, It is working fine with java 8. So please help me out to enable TLS 1.1 on java 7.

2

Use this as a command line parameter while running your Java 7 application

-Dhttps.protocols=TLSv1.1,TLSv1.2

It works for me and I no longer get the error. You can refer to the official documentation here.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.