Как исправить время отклика на вызов REST API в Java? - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу вызвать REST API с помощью программирования Java.И я также хочу ограничить время вызова этого API.Если время ответа превышает 10 секунд, я хочу отключить вызов API и напечатать сообщение о том, что время ответа превышает 10 секунд.

Пожалуйста, помогите мне приведенным примером кода Java.

Ниже приведен исходный код вызывающего API.

JSONParserPost jsonParserpost = new JSONParserPost();
        String output = jsonParserpost.makeHttpRequest(URL, "POST", request); 
        System.out.println("Row output :"+ output.toString());
        JSONObject jsonObject = new JSONObject(output);
        if(jsonObject != null) 
            responeXML = (String)jsonObject.get("response");

Здесь, во 2-й строке, я назвал REST API.Теперь я хочу установить ограничение по времени ответа REST API.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы можете использовать Spring restTemplate

   @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        ((SimpleClientHttpRequestFactory) restTemplate.getRequestFactory()).setConnectTimeout(milisecond);
        ((SimpleClientHttpRequestFactory) restTemplate.getRequestFactory()).setReadTimeout(milisecond);

        return restTemplate;
    }

Пожалуйста, найдите пример - https://howtodoinjava.com/spring-boot2/resttemplate-timeout-example/

0 голосов
/ 20 февраля 2019

Если вы используете httpClient, следующая ссылка может помочь вам понять вашу проблему. Apache HttpClient Timeout .

int CONNECTION_TIMEOUT_MS = timeoutSeconds * 1000; // Timeout in millis.
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(CONNECTION_TIMEOUT_MS)
.setConnectTimeout(CONNECTION_TIMEOUT_MS)
.setSocketTimeout(CONNECTION_TIMEOUT_MS)
.build();

HttpPost httpPost = new HttpPost(URL);
httpPost.setConfig(requestConfig);
0 голосов
/ 20 февраля 2019

1

URL url = new URL(this.serviceURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setRequestProperty("Accept", "application/xml;");

connection.setDoInput(true);
connection.setDoOutput(true);

/*
 * connection timeout value to 20 seconds
 */
int apiReadTimeOut = 20; // 20 seconds
connection.setConnectTimeout(apiReadTimeOut * 1000);
connection.setReadTimeout(apiReadTimeOut * 1000);

2

HttpClient httpClient = null;

/*
* connection timeout value to 20 seconds
*/
final HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);
httpClient = new DefaultHttpClient(httpParams);
...