加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

SOAP WebService 短信接口对接

发布时间:2020-12-16 21:46:37 所属栏目:安全 来源:网络整理
导读:import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import org.apache.axis.client.Call;import org.apache.a
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.message.SOAPHeaderElement;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * SMS API
 */
@Controller
public class Sms {

    /** 
     * 短信发送接口对接
     * @param phone
     * @param message
     */
    @RequestMapping(value = "sendSms")
    public String sendSms(String phone,String message) {
        String nameSpace = "http://tempuri.org/";
        String sendMessage = "SendMessage";
        String url = "http://192.168.1.25:9090/WebService.asmx?wsdl";
        String localPart = "soapHeader";

        List<Object> list = new ArrayList<Object>();
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("phone",phone);
        map.put("message",message);
        map.put("taskname","任务名称");
        map.put("bankMessagid","[建设银行]");
        try {
        	//创建服务
	        Service serv = new Service();
	        SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(nameSpace,localPart);
	        Call call = (Call) serv.createCall();
	        Map<String,String> roleMap = new HashMap<String,String>();
	        roleMap.put("password","123456");
	        for (Map.Entry<String,String> entry : roleMap.entrySet()){
	            soapHeaderElement.addChildElement(entry.getKey()).setValue(entry.getValue());
	            soapHeaderElement.addChildElement(entry.getKey()).setValue(entry.getValue());
	        }
	        soapHeaderElement.setNamespaceURI(nameSpace);
	        call.addHeader(soapHeaderElement);
	        //设置要调用的接口地址
	        call.setTargetEndpointAddress(url);
	        //设置要调用的接口方法
	        call.setOperationName(new QName(nameSpace,sendMessage));
	        call.setSOAPActionURI(nameSpace+sendMessage);
	        //设置参数名  第二个参数表示入参类型,第三个参数表示入参
	        for (Map.Entry<String,Object> entry : map.entrySet()) {
	            if (entry.getValue() instanceof String) {
	                call.addParameter(new QName(nameSpace,entry.getKey()),XMLType.XSD_STRING,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Long) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_LONG,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Double) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_DOUBLE,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Float) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_FLOAT,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Integer) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_INTEGER,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Date) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_DATETIME,ParameterMode.IN);
	            } else if (entry.getValue() instanceof Boolean) {
	                call.addParameter(new QName(nameSpace,XMLType.XSD_BOOLEAN,ParameterMode.IN);
	            }
	            list.add(entry.getValue());
	        }
	        //返回参数类型
	        call.setReturnType(XMLType.XSD_STRING);
	        call.setEncodingStyle("UTF-8");
	        //开始调用
	        String result = (String) call.invoke(list.toArray());
	        //dom4j
	        Document doc = DocumentHelper.parseText("<root>"+ result + "</root>");
	        Element root = doc.getRootElement();//根
	        //获取接口返回的节点内容 
	        System.out.println("rtMessage1==="+root.element("rtMessage1").getText());
	        System.out.println("rtMessage2==="+root.element("rtMessage2").getText());
	        System.out.println("rtMessage3==="+root.element("rtMessage3").getText());
	        
	        return "";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读