• axis2 调用.net基于https的WebService接口


    一、创建证书

    1,在IE中访问WSDL的URL,弹出“安全警报”窗口,查看证书->详细信息标签页->复制到文件->下一步->下一步->指定文件名,将证书下载保存为.cer文件,例如:test_axis.cer

    2,用下载到的证书文件生成信任库文件:

    >keytool -import -file test_axis.cer -storepass changeit -keystore client.truststore -alias serverkey -noprompt

    3,在调用WebService代码前指定信任库文件的路径:

    System.setProperty("javax.net.ssl.trustStore", "/tmp/client.truststore");

    System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

    然后在java调用代码中加入

    二、调用执行

    package kind.util;
    
    import java.util.Iterator;
    
    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    import org.apache.axiom.soap.SOAP12Constants;
    import org.apache.axis2.Constants;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;
    
    public class WebServiceUtil {
    
        private static EndpointReference targetEPR = new EndpointReference(
                "https://XXXXXX/IXXX.asmx?wsdl");// 接口WebService地址
        
        public static void main(String[] args) {
            try {
    
                System.setProperty("javax.net.ssl.trustStore", "D://client.truststore");  
                System.setProperty("javax.net.ssl.trustStorePassword", "changeit");  
                
                OMFactory fac = OMAbstractFactory.getOMFactory();
    
                OMNamespace omNs = fac.createOMNamespace(
                        "http://tempuri.org/", "tns");// 命名空间
     
                // 请求参数设置
                Options options = new Options();
                options.setTo(targetEPR);// 设定webservice地址
                options.setTransportInProtocol(Constants.TRANSPORT_HTTP);// 设定传输协议
                options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);// 设定SOAP版本soap1.2
    
                // 客户端绑定参数设置
                ServiceClient sender = new ServiceClient();
                sender.setOptions(options);
    
                // 设定访问的接口方法
    
                OMElement method = fac.createOMElement("Authorization", omNs);// 要调用的接口方法名称
                
                OMElement value1 = fac.createOMElement("username", omNs);// 方法的第一个参数名称
                value1.addChild(fac.createOMText(value1, "username"));// 设定参数的值
                method.addChild(value1);// 方法设置参数
                
                OMElement value2 = fac.createOMElement("password", omNs);// 方法的第一个参数名称
                value2.addChild(fac.createOMText(value2, "password"));// 设定参数的值
                method.addChild(value2);// 方法设置参数
     
                OMElement result = sender.sendReceive(method);// 调用接口方法
                Iterator iterator = result.getChildrenWithLocalName("AuthorizationResult");
                System.out.println("guid="+((OMElement)iterator.next()).getText());
            }
    
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    linux基本操作
    第一个单元测试
    .Net6中的System.Text.Json
    使用 Minio 和 Microsoft SQL Server 2022 组合访问 Data Anywhere
    龙芯发布 .NET 6 SDK 6.0.105ea1 LoongArch64 版本
    .NET 6.0.6 和 .NET Core 3.1.26、Visual Studio 2022 17.2 和 17.3 Preview 2 和 .NET 7.0 Preview 5 同时发布
    一个用于 Microsoft.Extensions.Logging 的测试库MELT
    在OpenCloudOS使用snap安装.NET 6
    distroless 镜像介绍及 基于cblmariner的.NET distroless 镜像的容器
    [AWS] Solve Error: No PEM start marker "b'BEGIN PRIVATE KEY'" found
  • 原文地址:https://www.cnblogs.com/101key/p/3711544.html
Copyright © 2020-2023  润新知