String urlstring="http://service.abc.com/query/balance/"; //请求URL地址
url = new URL(urlstring);
urlConnection = url.openConnection(); //获取连接
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line=br.readLine())!=null) {
sb.append(line);
}
content = sb.toString;
以上的代码是我使用java的URL类连接一个URL地址并返回值。返回的类似于XML格式的数据。一切都很正常。但是现在需要加上SSL,也就是https://service.abc.com/query/balance/。URL类就不支持了。请问大家我该怎么改才能支持这种连接方式?
url = new URL(urlstring);
urlConnection = url.openConnection(); //获取连接
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line=br.readLine())!=null) {
sb.append(line);
}
content = sb.toString;
以上的代码是我使用java的URL类连接一个URL地址并返回值。返回的类似于XML格式的数据。一切都很正常。但是现在需要加上SSL,也就是https://service.abc.com/query/balance/。URL类就不支持了。请问大家我该怎么改才能支持这种连接方式?
上面这个讲的很详细。需要java1.4以上,不过我想现在这应该不成问题了。
楼主试试,网上资料应该不少
还是先用3.几的吧
HttpClient httpclient = new HttpClient();
GetMethod httpget = new GetMethod("http://service.abc.com/query/balance/feiyond/");
try {
httpclient.executeMethod(httpget);
System.out.println("http:"+httpget.getStatusLine());
} finally {
httpget.releaseConnection();
}
异常如下:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
大致说一下意思:这个错误意味着服务器没有一个认证过的CA,我们需要手工导入服务端的认证,并安装到jdk的keystore里。
1.使用IE访问该网址,在弹出的安全警报中点击查看证书,在详细信息中点复制到文件,将该证书保存到本地。
2.然后使用keytool -import -file %刚才你保存的证书文件% -keystore (1.4是%JAVA_HOME%\jre\javaws\cacerts,1.5的地址是%JAVA_HOME%\jre\lib\security\cacerts) -keypass (默认为changeit)
3.然后你的代码就可以跑了