如何调用https上公开的Web服务?

时间:2012-10-05 10:48:07

标签: java web-services

我是网络服务新手。我已经完成了编写客户端代码的任务,该代码将调用在https上公开的身份验证Web服务。我需要从客户端代码传递用户名和密码来检查有效用户。我还有密钥库和可信任文件。我不知道如何使用这些文件。任何人都可以指导我并提供示例客户代码吗?

我正在使用Axis从wsdl生成客户端存根。

此致

Vishal

3 个答案:

答案 0 :(得分:0)

  1. 当你说Webservice和Axis时,我认为你在谈论SOAP。您可以查看Java webservice (soap) client - use certificates

  2. SOAP是一种基于HTTP的协议。如果您希望它通过SSL,则可以使用HTTPS。

  3. 如果您正在处理JSR-311的RESTful实现,例如CXFjersey等,您可以在他们的网站上找到示例。

答案 1 :(得分:0)

如果您可以访问该网址,则需要添加证书。

  • 访问URL并单击锁定图标以查看证书。
  • 转到证书的详细信息选项卡,并以Base64 .cer格式
  • 保存证书
  • 安装证书
  • 执行以下命令

命令:

$ keytool -import -noprompt -trustcacerts -alias ALIASNAME -file FILENAME_OF_THE_INSTALLED_CERTIFICATE -keystore PATH_TO_CACERTS_FILE -storepass PASSWORD

参考: http://docs.oracle.com/javase/tutorial/security/toolsign/rstep2.html

答案 2 :(得分:0)

axis1或axis2? 无论如何..如果它只是https,你需要导入证书,根据你所呼叫的服务器的政策,你可能也必须出示证书......

在此查看https://axis.apache.org/axis2/java/rampart/samples.html以获取有关基本身份验证的信息和示例。

至于为传出请求添加证书,您需要按照以下方式执行操作:

      System.setProperty("javax.net.ssl.trustStoreType", "JKS");
      System.setProperty("javax.net.ssl.trustStore", "keystore.jks");
      System.setProperty("javax.net.ssl.trustStorePassword", "password");
      System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
      System.setProperty("javax.net.ssl.keyStore", "client.p12");
      System.setProperty("javax.net.ssl.keyStorePassword", "password");

如果您的通信是通过代理进行的,请另外小心..