import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class TestSolution {
public static String getXXX(String endPoint, String username, String password, String channel, String realId, String realIdType) throws Exception {
String query_pattern = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:svc=\"http://svc.pin.xxx.com\"><soapenv:Header><svc:CredentialHeader><username>%s</username><password>%s</password></svc:CredentialHeader></soapenv:Header><soapenv:Body><svc:getHsbcCredentialsRequest><channel>%s</channel><hkid>%s</hkid><hkidType>%s</hkidType></svc:getHsbcCredentialsRequest></soapenv:Body></soapenv:Envelope>";
SSLContext context = SSLContext.getInstance("SSL");
context.init(null, new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
},
new SecureRandom()
);
HttpsURLConnection connection = (HttpsURLConnection) (new URL(endPoint).openConnection());
connection.setSSLSocketFactory(context.getSocketFactory());
connection.setHostnameVerifier(
new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
}
);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "text/xml");
connection.connect();
String query = String.format(query_pattern, username, password, channel, realId, realIdType);
DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
dos.write(query.getBytes());
dos.flush();
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new IOException("Response Code Error [" + responseCode + "]");
}
InputStream dis = connection.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = dis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
byte[] bytes = bos.toByteArray();
String result = new String(bytes);
bos.close();
dis.close();
dos.close();
connection.disconnect();
return result;
}
public static void main(String args[]) throws Exception {
String endPoint = "https://xxx.xxx.com/services/xxxxx";
String username = "testuser";
String password = "XXXXXX";
String realId = "xxxxx";
String realIdType = "I";
String channel = "XXXX";
String result = TestSolution.getXXX(endPoint, username, password, channel, realId, realIdType);
System.out.println(result);
}
}
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class TestSolution {
public static String getXXX(String endPoint, String username, String password, String channel, String realId, String realIdType) throws Exception {
String query_pattern = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:svc=\"http://svc.pin.xxx.com\"><soapenv:Header><svc:CredentialHeader><username>%s</username><password>%s</password></svc:CredentialHeader></soapenv:Header><soapenv:Body><svc:getHsbcCredentialsRequest><channel>%s</channel><hkid>%s</hkid><hkidType>%s</hkidType></svc:getHsbcCredentialsRequest></soapenv:Body></soapenv:Envelope>";
SSLContext context = SSLContext.getInstance("SSL");
context.init(null, new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
},
new SecureRandom()
);
HttpsURLConnection connection = (HttpsURLConnection) (new URL(endPoint).openConnection());
connection.setSSLSocketFactory(context.getSocketFactory());
connection.setHostnameVerifier(
new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
}
);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "text/xml");
connection.connect();
String query = String.format(query_pattern, username, password, channel, realId, realIdType);
DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
dos.write(query.getBytes());
dos.flush();
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new IOException("Response Code Error [" + responseCode + "]");
}
InputStream dis = connection.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = dis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
byte[] bytes = bos.toByteArray();
String result = new String(bytes);
bos.close();
dis.close();
dos.close();
connection.disconnect();
return result;
}
public static void main(String args[]) throws Exception {
String endPoint = "https://xxx.xxx.com/services/xxxxx";
String username = "testuser";
String password = "XXXXXX";
String realId = "xxxxx";
String realIdType = "I";
String channel = "XXXX";
String result = TestSolution.getXXX(endPoint, username, password, channel, realId, realIdType);
System.out.println(result);
}
}