2017-08-04 4 views
0

J'essaie de faire un appel de demande PUT à partir du code. Je l'ai utilisé comme objet WebResource classe ci-dessous:com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: réinitialisation de la connexion

final Client client = Client.create(); 
final WebResource webResource = client.resource(API_URL); 
client.setConnectTimeout(Integer.valueOf(connectionTimeout)); 
client.setReadTimeout(Integer.valueOf(readTimeout)); 
client.addFilter(new HTTPBasicAuthFilter(apiUsername, apiPassword)); 
webResource.type(MediaType.APPLICATION_JSON); 
webResource.accept(MediaType.APPLICATION_JSON); 
webResource.header("Content-Length", 
String.valueOf(jsonInString.getBytes(Charset.forName("UTF-8")).length)); 
final ClientResponse response = webResource.put(ClientResponse.class, 
jsonInString); 

ici toutes les variables connectionTimeout, ReadTimeout apiUsername, apiPassword, API_URL a des valeurs propres.

Depuis la dernière ligne, il est trowing SocketException comme com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Connexion réinitialisée L'exception est pris dans le bloc de capture de ClientHandlerException. Mais quand j'essaye de frapper le API_URL avec d'autres entrées de Postman Rest Client, j'obtiens la réponse de succès.

Quelqu'un peut-il s'il vous plaît aidez-moi à comprendre pourquoi il ne fonctionne pas à partir du code?

+0

Avez-vous obtenu une solution pour cela? Je remarque qu'il y a longtemps que vous avez demandé, et en fait je suis confronté au même problème. – prnjn

Répondre

0

Utilisez JRE 7 comme environnement d'exécution. Et créez votre client comme ci-dessous et utilisez. Cela résoudra votre problème.

package com.myoffice.util; 

import java.security.SecureRandom; 
import javax.net.ssl.HttpsURLConnection; 
import javax.net.ssl.SSLContext; 
import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.config.DefaultClientConfig; 

public class ClientHelper { 

    enter code here 

    private static Client client = null; 

    static{ 
     SSLContext ctx = null; 
     try { 
      //Protocol used is TLSv1.2. You may need other ..check target URL required Protocol 
      ctx = SSLContext.getInstance("TLSv1.2")); 
      ctx.init(null, null, new SecureRandom()); 
      HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory()); 
      client= Client.create(new DefaultClientConfig()); 
     } catch (Exception e) { 
      logger.error("Exception while creating SSLContext", e); 
     } 
    } 

    public static Client getClient(){ 
     return client; 
    } 
}