프록시를 사용하여 웹 응용 프로그램에서 외부 웹 사이트를 호출 해 봅니다. 또한이 외부 웹 사이트에서 POST 요청을 실행해야합니다.Java HttpClient - 프록시를 통해 파일로 게시
저는 다음을 사용하고 있습니다 : tomcat7, org.apache.httpcomponents 4.3.4, spring.
프록시없이 작동하면 응답 상태가 '200'이됩니다.
// uri = "https://punkte.eiv-fobi.de/upload/upload.do"
public HttpStatus sendPostWithProxy(URI uri, File file) throws Exception {
try {
// JVM Parameter: -Dhttps.proxyHost and -Dhttps.proxyPort
String proxyHost = System.getProperty("https.proxyHost");
String proxyPort = System.getProperty("https.proxyPort");
HttpClient httpClient = HttpClientBuilder.create().build();
// CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(uri);
HttpHost proxy = new HttpHost(proxyHost,
Integer.valueOf(proxyPort), "https");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(file,
ContentType.MULTIPART_FORM_DATA);
builder.addPart(PART_NAME, fileBody);
httpPost.setEntity(builder.build());
RequestConfig config = RequestConfig.custom().setProxy(proxy)
.build();
httpPost.setConfig(config);
HttpResponse response = httpClient.execute(httpPost);
return HttpStatus.valueOf(response.getStatusLine().getStatusCode());
} catch (Exception e) {
LOGGER.error(
"exception occurred.",
e);
}
return null;
}
다음과 같은 예외 점점 : 임 잘못 수행 무엇
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
을
// uri = "https://punkte.eiv-fobi.de/upload/upload.do"
private HttpStatus sendPost(URI uri, File file)
throws ClientProtocolException, IOException {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(uri);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(file, ContentType.MULTIPART_FORM_DATA);
builder.addPart(PART_NAME, fileBody);
httpPost.setEntity(builder.build());
HttpResponse response = httpClient.execute(httpPost);
return HttpStatus.valueOf(response.getStatusLine().getStatusCode());
}
지금 나는이 추가 프록시를 시도? 대안?