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 "";
}
}
SOAP WebService 短信接口对接
最新推荐文章于 2022-11-18 16:11:27 发布