Closed
Description
With latest version (2.1.0-alpha1), As the following codes, it works fine while connectiong to server with http; but it is failed for websocket, it alway returns 501 status code. does asynch-http-client support the proxy with NTML schema?
Scenario 1: connecting www.google.com, connection established
String url="http://www.google.com/";
DefaultAsyncHttpClientConfig.Builder configBuilder = new DefaultAsyncHttpClientConfig.Builder();
configBuilder.setWebSocketMaxFrameSize(WEBSOCKET_MAX_FRAME_SIZE);
boolean isWss = SSLConfigurationUtil.isWssConnection(url);
setProxyConfig(configBuilder);
AsyncHttpClientConfig cf = configBuilder.build();
client = new DefaultAsyncHttpClient(cf);
Future<Response> responseFuture = client.prepareGet(url).execute();
int status = responseFuture.get().getStatusCode(); //status ==200, success
Scenario 2: connecting to websocket, failed. return 501 status code
String url="ws://192.168.1.100/hello";
DefaultAsyncHttpClientConfig.Builder configBuilder = new DefaultAsyncHttpClientConfig.Builder();
configBuilder.setWebSocketMaxFrameSize(WEBSOCKET_MAX_FRAME_SIZE);
boolean isWss = SSLConfigurationUtil.isWssConnection(url);
setProxyConfig(configBuilder);
AsyncHttpClientConfig cf = configBuilder.build();
client = new DefaultAsyncHttpClient(cf);
WebSocketUpgradeHandler.Builder wsHandlerBuilder = new WebSocketUpgradeHandler.Builder();
wsHandlerBuilder.addWebSocketListener(new NettyWebSocketByteListener());
WebSocketUpgradeHandler upgradeHandler = wsHandlerBuilder.build();
WebSocket session = client.prepareGet(url).execute(upgradeHandler).get(); //Invalid Status Code 501
private void setProxyConfig(Builder configBuilder) {
try {
ProxyServer.Builder psBuilder = new ProxyServer.Builder(proxyHost, Integer.valueOf(proxyPort));
Realm.Builder realmBuilder = new Realm.Builder(proxyUsername, proxyPassword);
realmBuilder.setUsePreemptiveAuth(true);
realmBuilder.setNtlmDomain(proxyUserDomain);
realmBuilder.setNtlmHost(proxyHost);
realmBuilder.setScheme(AuthScheme.NTLM);
Realm realm = realmBuilder.build();
psBuilder.setRealm(realm);
ProxyServer proxyServer = psBuilder.build();
configBuilder.setProxyServer(proxyServer);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}