Я использую Java-код для вызова REST API из eclipse. Несмотря на то, что настройки прокси настроены в затмении, я все равно получаю Connection Timed Out error
. Этот вызов API не выполняется только с сервера среды разработки. Когда я выполняю тот же код с моего личного ноутбука, он работает нормально, и я получаю ответ. Но в виртуальной среде среды разработки запрос не направляется на прокси-сервер, а направляется непосредственно к цели.
Но из SOAPUI я могу получить ответ. В SOAPUI я также настроил те же параметры прокси.
public String updateServiceNowTicket(String sysId, String state, String workNotes) throws HttpException, IOException
{
// System.getProperties().put("http.proxyHost", "someProxyURL");
// System.getProperties().put("http.proxyPort", "someProxyPort");
// System.setProperty("java.net.useSystemProxies", "true");
// System.setProperty("com.sun.net.ssl.checkRevocation", "false");
// //AxisProperties.setProperty("axis.socketSecureFactory","org.apache.axis.components.net.SunFakeTrustSocketFactory");
String KEY_PROTOCOL = "https";
String KEY_ENDPOINT = "XXXXXXX.service-now.com";
String KEY_URI = "/api/now/table/sc_task/";
String KEY_USERNAME = "XXXXXXXXXXXXXXXXXX";
String KEY_PASSWORD = "XXXXXXXXXXXXXXXXXX";
String responseBody = "";
int statusCode = 0;
// JSON body
Map<String, Object> jsonMap = new HashMap<String, Object>();
jsonMap.put("state", state);
jsonMap.put("work_notes", workNotes);
Gson gson = new GsonBuilder().create();
String jsonBody = gson.toJson(jsonMap);
jsonMap.clear();
HttpClient httpClient = HttpClients.createDefault();
try
{
// String url = KEY_ENDPOINT + sysId;
String url = KEY_PROTOCOL + "://" + KEY_ENDPOINT + KEY_URI + sysId;
HttpPut putRequest = new HttpPut(url);
System.out.println("URL: " + url);
StringEntity entity = new StringEntity(jsonBody);
String encodedCred = Base64
.encodeBase64URLSafeString((new String(KEY_USERNAME + ":" + KEY_PASSWORD).getBytes()));
putRequest.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
putRequest.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encodedCred);
putRequest.setHeader(HttpHeaders.ACCEPT, "application/json");
putRequest.setEntity(entity);
log.debug("Executing request " + putRequest.getRequestLine());
HttpResponse response = httpClient.execute(putRequest);
try
{
log.debug("----------------------------------------");
log.debug("ServiceNow Response:" + response.getStatusLine());
responseBody = EntityUtils.toString(response.getEntity());
statusCode = response.getStatusLine().getStatusCode();
log.debug(responseBody);
}
catch (Exception e)
{
responseBody = "Error: " + e.getMessage();
log.error("Error: " + e.getMessage());
}
}
catch (Exception e)
{
responseBody = "Error: " + e.getMessage();
log.error("Error: " + e.getMessage());
}
System.out.println("responseBody: " + responseBody);
return responseBody;
}
Получена ошибка
2019-10-28T03:10:40,973 ERROR main com.smwe.SNOWTicketClosure:120 - Error: Connect to XXXXX.service-now.com:443 [XXXXXX.service-now.com/XXX.XX.XX.XX] failed: Connection timed out: connect
responseBody: Error: Connect to XXXXXX.service-now.com:443 [XXXXXX.service-now.com/XXX.XX.XX.XX] failed: Connection timed out: connect