使用axis调用WebService,Java WebService调用工具类

commons-discovery commons-discovery 0.2

#### WebService 调用工具类



package com.micromaple.common.utils;

import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.types.Schema;
import org.apache.commons.collections.MapUtils;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* WebService - 工具类
* Title: WebServiceUtils
* Description:
*
* @author Micromaple
* @version 1.0.0
* @date 2022/7/1 12:14
*/
@Slf4j
public class WebServiceUtils {
// 接口调用地址
private static String url = “http://127.0.0.1:8080/webservice.asmx”;
// 命名空间
private static String namespace = “http://tempuri.org/”;

/\*\*

* WebService - 调用接口
*
* @param methodName 函数名
* @param params 参数
* @param clazz 返回对象class
* @return 返回结果(Object)
*/
public static T call(String methodName, Map<String, String> params, Class clazz) {
// log.info(“调用 WebService 发送参数==>” + MapperUtils.mapToJson(params));
String soapActionURI = namespace + methodName;
try {
Service service = new Service();

        SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName);
        header.setNamespaceURI(namespace);

        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(url);

        call.setOperationName(new QName(namespace, methodName));

        // 添加参数
        List<String> parameterList = Lists.newArrayList();
        if (params != null) {
            Set<String> paramsKey = params.keySet();
            for (String key : paramsKey) {
                call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN);
                String pValue = MapUtils.getString(params, key);
                header.addChildElement(key).setValue(pValue);
                parameterList.add(pValue);
            }
        }
        call.setUseSOAPAction(true);
        call.setSOAPActionURI(soapActionURI);
        call.addHeader(header);

        // 进行序列化 实体类也要序列化 implements Serializable
        call.registerTypeMapping(clazz, new QName(namespace, soapActionURI),
                new BeanSerializerFactory(clazz, new QName(namespace, soapActionURI)),
                new BeanDeserializerFactory(clazz, new QName(namespace, soapActionURI)));
        // 设置输出的类
        call.setReturnClass(clazz);
        // 接口返回结果
        T result = (T) call.invoke(parameterList.toArray());
        log.info("调用 WebService 接口返回===>" + result);
        return result;
    } catch (Exception e) {
        log.error("调用 WebService 接口错误信息==>" + e.getMessage());
    }
    return null;
}

/\*\*

* WebService - 接口调用
*
* @param methodName 函数名
* @param params 参数
* @return 返回结果(String)
*/
public static String call(String methodName, Map<String, String> params) {
// log.info(“调用 WebService 发送参数==>” + MapperUtils.mapToJson(params));
String soapActionURI = namespace + methodName;
try {
Service service = new Service();

        SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName);
        header.setNamespaceURI(namespace);

        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(url);

        call.setOperationName(new QName(namespace, methodName));

        // 添加参数
        List<String> parameterList = Lists.newArrayList();
        if (params != null) {
            Set<String> paramsKey = params.keySet();
            for (String key : paramsKey) {
                call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN);
                String pValue = MapUtils.getString(params, key);
                header.addChildElement(key).setValue(pValue);
                parameterList.add(pValue);
            }
        }
        call.setUseSOAPAction(true);
        call.setSOAPActionURI(soapActionURI);
        call.addHeader(header);
        // 设置返回类型
        call.setReturnType(new QName(namespace, methodName), String.class);
        // 接口返回结果
        String result = (String) call.invoke(parameterList.toArray());
        log.info("调用 WebService 接口返回===>" + result);
        return result;
    } catch (Exception e) {
        log.error("调用 WebService 接口错误信息==>" + e.getMessage());
    }
    return null;
}

/\*\*

* WebService - 调用接口
*
* @param methodName 函数名
* @param params 参数
* @return 返回结果(String)
*/
public static String call2(String methodName, Map<String, String> params) {
// log.info(“调用 WebService 发送参数==>” + MapperUtils.mapToJson(params));
String soapActionURI = namespace + methodName;
try {
Service service = new Service();

        SOAPHeaderElement header = new SOAPHeaderElement(namespace, methodName);
        header.setNamespaceURI(namespace);

        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(url);

        call.setOperationName(new QName(namespace, methodName));

        // 添加参数
        List<String> parameterList = Lists.newArrayList();
        if (params != null) {
            Set<String> paramsKey = params.keySet();
            for (String key : paramsKey) {
                call.addParameter(new QName(namespace, key), XMLType.XSD_STRING, ParameterMode.IN);
                String pValue = MapUtils.getString(params, key);
                header.addChildElement(key).setValue(pValue);
                parameterList.add(pValue);
            }
        }
        call.setUseSOAPAction(true);
        call.setSOAPActionURI(soapActionURI);
        call.addHeader(header);
        // 设置返回类型
        call.setReturnType(XMLType.XSD_SCHEMA);
        // 接口返回结果
        Schema schemaResult = (Schema)call.invoke(parameterList.toArray());
        String result = "";
        for(int i = 0; i<schemaResult.get\_any().length; i++){
            result = result + schemaResult.get\_any()[i];
        }
        log.error("调用 WebService 接口返回===>" + result);
        return result;

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值