Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要使用rest模板作为post方法使用服务吗_Java_Rest_Spring Boot_Resttemplate - Fatal编程技术网

Java 要使用rest模板作为post方法使用服务吗

Java 要使用rest模板作为post方法使用服务吗,java,rest,spring-boot,resttemplate,Java,Rest,Spring Boot,Resttemplate,我必须使用rest模板,而不是httpclient。 http客户端正在正常运行 我为rest模板尝试的方法如下: public class CommonMethods { final Logger logger = (Logger) LoggerFactory.getLogger(CommonMethods.class); @Autowired HttpClientFactory httpClientFactory; enter code here @

我必须使用rest模板,而不是httpclient。 http客户端正在正常运行

我为rest模板尝试的方法如下:

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;
    }

想要在rest模板中配置超时,如何实现这一点。

添加这样一个bean

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();
}
和Autowire RestTemplate,而不是使用new

以上所有超时均以千秒为单位

@Autowired
@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);
    }
rest模板rest模板; @自动连线 HttpClientFactory HttpClientFactory; 公共字符串getPassportDetails(EmpProfile EmpProfile)引发JSONException{ 字符串url=Config.getDefaultCommonServiceURL(); 字符串a=jsonCreation.createJsonforNode(empProfile); HttpHeaders=新的HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity=新的HttpEntity(a,标题); ((HttpComponentClientHttpRequestFactory)this.restTemplate.getRequestFactory()).setReadTimeout(1*5000);//超时 String result=restemplate.postForObject(url、实体、String.class); logger.info(结果); logger.info(emprofile.toString()); 返回结果; }
正确格式化代码基于XML的配置如下:
@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;
    }
}
@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;

    }