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类就不支持了。请问大家我该怎么改才能支持这种连接方式?

解决方案 »

  1.   

    用HTTPClient,这个开源包内建了ssl支持:http://hc.apache.org/httpclient-3.x/sslguide.html
    上面这个讲的很详细。需要java1.4以上,不过我想现在这应该不成问题了。
      

  2.   

    http://www.javaworld.com/javaworld/javatips/jw-javatip96.html这里还有一个讲解如何直接用java的。
      

  3.   

    对使用用HTTPClient,这个开源包内建了ssl支持
    楼主试试,网上资料应该不少
      

  4.   

    需要java1.4以上,不过我想现在这应该不成问题了。
      

  5.   

    还要注意点,先别用4. 几的版本,那只是beta版还有问题,前一段时间同事用就有点问题
    还是先用3.几的吧
      

  6.   

    今早连续接受 jinxfei的教导
      

  7.   

    我用了httpclient,结果报这样的异常,请问该怎么解决啊?
    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
      

  8.   

    google了一下,有这个解决方案,跟你的错误完全一致:http://www.java-samples.com/showtutorial.php?tutorialid=210
    大致说一下意思:这个错误意味着服务器没有一个认证过的CA,我们需要手工导入服务端的认证,并安装到jdk的keystore里。
      

  9.   

    HttpClient 4.0通过代理访问Https的代码例子
      

  10.   

    如果不用HttpClient的话需要你把该网站的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.然后你的代码就可以跑了
      

  11.   

    我也在用java 请求https的URL,并且有一个abc.cer的证书文件,如何用上面大家说的工具做?新手,刚接触这方面,不是很清楚,大家能给出详细代码就再好不过了。