用HttpClient连接访问SSL系统(以RTC为例)
最近测试通过HttpClient登录SSL连接的RTC,发现原先改了认证方式为HTTP BASE后的方式并不适用于SSL,由于SSL是在构建安全传输通道后进行传输,而通道构建需要验证key-store,之前在apache+php的网站上配置SSL是要有crt和key两个文件,现在所接触的RTC是Java开发的,使用Tomcat的时候在Tomcat的server.xml中配上keystore即可。
下面是最近收集的HttpClient访问SSL系统的资料,结合最近接触的RTC,整理后发出来为需要此方面资料的朋友做参考。所涉及开发工具及环境:IBM Rational Team Concert+Rational team concert 4.0.1
操作步骤:
一、生成KeyStore
这一步是JDK自带的工具生成,保证配置好环境变量的同时,打开命令提示符,即运行中输入cmd。
输入如下命令:
keytool -genkey -alias tomcat -keyalg RSA -validity 60 -keystore E:\rtc.keystore
用Java发起HTTP请求与获取状态码(含状态码列表)
在使用Java请求Web程序比如访问WebService接口时,通常需要先判断访问URL的有效性,这里就Java发送HTTP请求的方式做简单记录,按照前辈们的说法,Java发HTTP请求,最常见的无非是两种,一种是用java.net.URLConnection,另一种则是大名鼎鼎的HttpClient。使用java.net.URLConnection比较麻烦,而HttpClient则比较简便。以发送POST请求为例
java.net.URLConnection方法如下:
private static void urlConnectionPost() { StringBuilder responseBuilder = null; BufferedReader reader = null; OutputStreamWriter wr = null; URL url; try { url = new URL("http://www.poorren.com"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoOutput(true); conn.setConnectTimeout(1000 * 5); wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(""); wr.flush(); // Get the response reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); responseBuilder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { responseBuilder.append(line + "\n"); } wr.close(); reader.close(); System.out.println(responseBuilder.toString()); } catch (IOException e) { e.printStackTrace(); } }