2017-04-26 1 views
1
public class CommonMethods { 
    final Logger logger = (Logger) LoggerFactory.getLogger(CommonMethods.class); 

    @Autowired 
    HttpClientFactory httpClientFactory; 
    enter code here 
    @Autowired 
    JSONCreation jsonCreation; 

    String responseAsStringEmployment; 

    public String getEmploymentDetails(EmpProfile empProfile) throws IOException, JSONException { 

     HttpClient clientEmployment = httpClientFactory.getHttpClient(); 

     String urlEmployment = Config.getDefaultCommonServiceURL(); 
     HttpPost requestEmployment = new HttpPost(urlEmployment + "getEmploymentDetails"); 
     requestEmployment.addHeader("content-type", "application/json"); 

     StringEntity params; 
     String a = jsonCreation.createJsonforNode(empProfile); 
     params = new StringEntity(a); 

     requestEmployment.setEntity(params); 

     logger.info("Request Employment :" + requestEmployment); 
     logger.info("clientEmployment :" + clientEmployment); 
     HttpResponse responseEmployment = clientEmployment.execute(requestEmployment); 
     logger.info("responseEmployment :" + responseEmployment); 
     responseAsStringEmployment = EntityUtils.toString(responseEmployment.getEntity()); 
     logger.info("Response Employment : " + responseAsStringEmployment); 

     logger.info("responseAsStringEmployment " + responseAsStringEmployment); 

     return responseAsStringEmployment; 
    } 

Au lieu de httpclient, je dois utiliser le modèle de repos. Le client http fonctionne correctement.voulez consommer le service en utilisant le modèle de repos pour la méthode post

La méthode que je l'ai essayé pour le modèle de repos est ci-dessous:

public String getEmployment() { 

     String url = "https://empprofile-blue.bdt.com/getEmploymentDetails"; 
     EmpProfile empProfile = new EmpProfile(); 
     RestTemplate restTemplate = new RestTemplate(); 
     EmpProfile result = restTemplate.postForObject(url, empProfile, EmpProfile.class); 

     System.out.println(result); 

     logger.info(empProfile.toString()); 

     return result.toString(); 
} 

Vous voulez configurer le délai dans le modèle reste la façon dont cela peut être réalisé.

+1

le format de votre code correctement – pvpkiran

Répondre

0

Ajouter un haricot comme celui-ci

@Bean 
    public RestTemplate restTemplateForEmployment(){ 
     HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); 
     CloseableHttpClient httpClient = httpClientBuilder.build(); 

     HttpComponentsClientHttpRequestFactory rf = new HttpComponentsClientHttpRequestFactory(httpClient); 
     rf.setConnectTimeout(1000); 
     rf.setConnectionRequestTimeout(1000); 
     rf.setReadTimeout(10000); 

     return new RestTemplate(rf); 
    } 

et autowire RestTemplate au lieu de créer l'utilisation de nouvelles ..

tous les délais d'attente ci-dessus sont en milleseconds.

0
@Configuration 
public class MyAppConfig { 

    @Bean 
    public RestTemplate restTemplate() { 
     return new RestTemplate(clientHttpRequestFactory()); 
    } 

    private ClientHttpRequestFactory clientHttpRequestFactory() { 
     HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); 
     factory.setReadTimeout(2000); 
     factory.setConnectTimeout(2000); 
     return factory; 
    } 
} 
+0

La configuration XML est le suivant:

1
@Autowired 
    RestTemplate restTemplate; 
    @Autowired 
    HttpClientFactory httpClientFactory; 


public String getPassportDetails(EmpProfile empProfile) throws JSONException { 

     String url = Config.getDefaultCommonServiceURL(); 

     String a = jsonCreation.createJsonforNode(empProfile); 
     HttpHeaders headers = new HttpHeaders(); 
     headers.setContentType(MediaType.APPLICATION_JSON); 
     HttpEntity<String> entity = new HttpEntity<>(a, headers); 
    ((HttpComponentsClientHttpRequestFactory)this.restTemplate.getRequestFactory()).setReadTimeout(1 * 5000);//timeout 

     String result = restTemplate.postForObject(url, entity, String.class); 
     logger.info(result); 

     logger.info(empProfile.toString()); 

     return result; 

    }