2016-10-01 3 views
0

Мне нужно установить соединение TLSv1.2 в этом коде:Установите TLSv1.2 на HttpClient с помощью PostMethod

public String login(){ 
    HttpClient client = new HttpClient(); 

    log.trace("#LOGIN"); 
    log.trace("url : " +this.url_login); 
    log.trace("grant_type : " +this.grant_type); 
    log.trace("customer_secret : " +this.customer_secret); 
    log.trace("username : " +this.username); 
    log.trace("customer_key : " +this.customer_key); 

    PostMethod post = new PostMethod(this.url_login); 

    post.setRequestHeader("content-Type", "application/x-www-form-urlencoded"); 
    NameValuePair[] data = { 
      new NameValuePair("grant_type", this.grant_type), 
      new NameValuePair("client_id", this.customer_key), 
      new NameValuePair("client_secret", this.customer_secret), 
      new NameValuePair("username", this.username), 
      new NameValuePair("password", this.password+this.security_token) 
    }; 
    post.setRequestBody(data); 
    try { 
     client.executeMethod(post); 
     String response = post.getResponseBodyAsString(); 
     JSONObject json = new JSONObject(response); 
     ......... 

Как я могу это сделать? Я видел, что это возможно с использованием SSLContext, но я не хочу переписывать код (это не проект мины) С уважением.

ответ

0

Ваш лимит в том, что вы можете сделать, если вы не хотите менять код. Есть несколько вещей, которые вы можете попробовать, проще всего перейти на Java 8, который по умолчанию включает TLS1.1 и 1.2.

Вы можете попробовать установить переключатель командной строки:

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

Там есть еще несколько примеров here, но по моему опыту, они работают только в особых ситуациях.

+0

Есть ли другие решения? – stefanOM

+0

К сожалению, нет, если вы не можете переключиться на Java 8, вам, скорее всего, нужно включить TLS 1.1 и 1.2, используя специальный SSLContext. Я должен был сделать что-то подобное, потому что мой уровень ОС в производстве не мог поддерживать Java 8. Вам нужна Java 7, потому что это первая версия JVM, поддерживающая TLS 1.1 и 1.2. Я не верю, что они поддерживали поддержку Java 6. – Mike