Hi,
Here is some more information. I am able to connect to the other system using below implementation.
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs,
String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public boolean isClientTrusted(X509Certificate[] arg0) {
return true;
}
public boolean isServerTrusted(X509Certificate[] arg0) {
return true;
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
StringBuffer result = new StringBuffer();
try {
// Send data
URL urlM = new URL(url);
URLConnection conn = urlM.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
String xmlResult = Utils.generateXMLForPaymentGateway(app);
wr.write(xmlResult);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null)
{
result.append(line);
}
wr.close();
rd.close();
} catch (Exception e) {
e.printStackTrace();
}
I can send request and get the response. But same thing I am trying to achieve using HttpClient. This is how I am creating HttpClient.
try{
HttpConnectionManagerParams connectionManagerParms = new HttpConnectionManagerParams();
connectionManagerParms.setDefaultMaxConnectionsPerHost(maxHostConnections);
connectionManagerParms.setMaxTotalConnections(maxTotalConnections);
connectionManagerParms.setSoTimeout(socketTimeout);
connectionManagerParms.setConnectionTimeout(connectionTimeout);
connectionManager = new MultiThreadedHttpConnectionManager();
connectionManager.setParams(connectionManagerParms);
Protocol easyhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 9443);
httpClient = new HttpClient(connectionManager);
httpClient.getHostConfiguration().setHost(PropertyUtil.getHostname(), 9443, easyhttps);
} catch (Exception e){
clientCreated=false;
clientCreatedMessage = "Init HTTPUtil call Problem: Problem creating MultiThreadedHttpConnectionManager " + e.getMessage();
Log.error(clientCreatedMessage);
}
where as MySSLProtocolSocketFactory is extending SSLProtocolSocketFactory.
Please help,
Thanks,