Hallo,
nachdem der letzte Thread unbeantwortet blieb (Thema: Proxy mit HttpUrlConnection funktionierte nicht) hab ich mich entschlossen (auch aus anderen Gründen) den http-client von jakarta einzusetzen.
Leider klappt es auch hier nicht mit dem Proxy....
So sieht ein Verbindungsaufbau mit dem http-client aus:
Das klappt auch alles soweit, wenn ich eben keinen Proxy angebe.
Gebe ich aber einen an, erhalt ich durch diese Logzeile:
die Meldung:
was ja "access forbidden" heisst.
Tja, nun verstehe ich nicht warum. Gebe ich im firefox meinen (squid) proxy an, und rufe dann meine SSL-Testseite auf kommt die Zertifikatsabfrage und ich komme auf meine Testseite. Sprich squid + SSL funktionieren prinzipiell.
Nur aus dem http-client heraus nicht scheint es mir.
Nochmal kurz das Szenario:
Localhost : http-client -> proxy-server -> localhost : apache mit https
Jemand ne Idee?
nachdem der letzte Thread unbeantwortet blieb (Thema: Proxy mit HttpUrlConnection funktionierte nicht) hab ich mich entschlossen (auch aus anderen Gründen) den http-client von jakarta einzusetzen.
Leider klappt es auch hier nicht mit dem Proxy....
So sieht ein Verbindungsaufbau mit dem http-client aus:
Code:
protected String sendRequest(String urlParams) {
String answer = null;
HttpClient httpClient = new HttpClient();
if(networkParams.isUseProxy()) {
httpClient.getHostConfiguration().setProxy(networkParams.getProxyHost(), networkParams.getProxyPort());
logger.info("we DO use a proxy: host:" + networkParams.getProxyHost() + "Port: " + new Integer(networkParams.getProxyPort()).toString());
}
if(networkParams.isUseProxyCredentials()) {
httpClient.getState().setProxyCredentials(
new AuthScope(networkParams.getProxyHost(), networkParams.getProxyPort()),
new UsernamePasswordCredentials(networkParams.getProxyUserName(), networkParams.getProxyUserPassword()));
}
String url = networkParams.getRemoteProtocoll() +
networkParams.getRemoteDestinationAdress() +
":" +
networkParams.getRemoteDestinationPort() +
networkParams.getRemoteDestinationPath();
HttpMethod method = new PostMethod(url);
method.setQueryString(urlParams);
try {
int statusCode = httpClient.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
logger.error(OutputConstants.ERR_WRONG_RESPONSE + CommonOutput.LOG_SPACER + statusCode);
return null;
}
answer = method.getResponseBodyAsString();
} catch (HttpException e) {
logger.error(e.getMessage());
logger.error(e);
return null;
} catch (IOException e) {
logger.error(e.getMessage());
logger.error(e);
return null;
}
finally {
method.releaseConnection();
}
return answer;
}
Das klappt auch alles soweit, wenn ich eben keinen Proxy angebe.
Gebe ich aber einen an, erhalt ich durch diese Logzeile:
Code:
if (statusCode != HttpStatus.SC_OK) {
logger.error(OutputConstants.ERR_WRONG_RESPONSE + CommonOutput.LOG_SPACER + statusCode);
return null;
}
die Meldung:
Code:
ERR_WRONG_RESPONSE -> 403
was ja "access forbidden" heisst.
Tja, nun verstehe ich nicht warum. Gebe ich im firefox meinen (squid) proxy an, und rufe dann meine SSL-Testseite auf kommt die Zertifikatsabfrage und ich komme auf meine Testseite. Sprich squid + SSL funktionieren prinzipiell.
Nur aus dem http-client heraus nicht scheint es mir.
Nochmal kurz das Szenario:
Localhost : http-client -> proxy-server -> localhost : apache mit https
Jemand ne Idee?