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.ax
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, entry.getKey()), XMLType.XSD_LONG, ParameterMode.IN); } else if (entry.getValue() instanceof Double) { call.addParameter(new QName(nameSpace, entry.getKey()), XMLType.XSD_DOUBLE, ParameterMode.IN); } else if (entry.getValue() instanceof Float) { call.addParameter(new QName(nameSpace, entry.getKey()), XMLType.XSD_FLOAT, ParameterMode.IN); } else if (entry.getValue() instanceof Integer) { call.addParameter(new QName(nameSpace, entry.getKey()), XMLType.XSD_INTEGER, ParameterMode.IN); } else if (entry.getValue() instanceof Date) { call.addParameter(new QName(nameSpace, entry.getKey()), XMLType.XSD_DATETIME, ParameterMode.IN); } else if (entry.getValue() instanceof Boolean) { call.addParameter(new QName(nameSpace, entry.getKey()), 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 ""; } }