gpt4 book ai didi

java - 具有 Java 应用程序和 SSL 的 Web 服务客户端

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:38 24 4
gpt4 key购买 nike

我正在开发一个 Java 桌面应用程序,我想在其中使用 Web 服务。 Web 服务需要使用 binarysecuritytoken 的消息级安全的双向 SSL 连接。我将 NetBeans IDE 6.9.1 与 JDK 1.6.0.23 和 JAX-WS 一起用作 ws 包装器。如何在不使用客户端计算机上的任何 Web 服务器的情况下与 ws 通信。我阅读的大部分内容都需要在客户端计算机上安装 tomcat 或其他一些 Web 服务器(在 tomcat 中配置 keystore 等等......)。有可能吗?请为 Java 桌面应用程序推荐一些基于 SSL 的 ws 客户端的文章。

最佳答案

这里有两种处理 WS over SSL 的方法 http://ws.apache.org/xmlrpc/ssl.html .
正确的方法是为 SE 和 EE 解决方案配置和使用您的 keystore 。
下一个快速解决方案也适用于我:

package client;

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;
import javax.xml.namespace.QName;

import ws.MyService1;
import ws.MyService1ServiceLocator;

public class Client {

public static void main(String[] args) throws Exception {
test();
}

public static void test() throws Exception {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}

public void checkClientTrusted(X509Certificate[] certs, String authType) {
// Trust always
}

public void checkServerTrusted(X509Certificate[] certs, String authType) {
// Trust always
}
} };
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};

sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);

// use secured service
QName qname = new QName("http://ws", "MyService1Service");
String url = "https://127.0.0.1:7002/MyService/wsdl/MyService1.wsdl";
MyService1 service = new MyService1ServiceLocator(url, qname).getMyService1();
System.out.println(service.getMessage());
}
}

关于java - 具有 Java 应用程序和 SSL 的 Web 服务客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com