webservice带讯息头的请求写法
webservice带消息头的请求写法
package org.test; import java.net.MalformedURLException; import java.rmi.RemoteException; import java.text.SimpleDateFormat; import java.util.Date; import javax.xml.rpc.ServiceException; import javax.xml.soap.SOAPException; import org.apache.axis.message.SOAPHeaderElement; import org.apache.axis.types.URI.MalformedURIException; import cn.com.chinatelecom.util.MD5; import cn.com.chinatelecom.www.schema.ctcc.terminal_location.v2_1.LocationInfo; import cn.com.chinatelecom.www.wsdl.ctcc.terminal_location.v2_1._interface.TerminalLocation; import cn.com.chinatelecom.www.wsdl.ctcc.terminal_location.v2_1.service.TerminalLocationBindingStub; import cn.com.chinatelecom.www.wsdl.ctcc.terminal_location.v2_1.service.TerminalLocationServiceLocator; public class TerminalLocationTest { public LocationInfo getLoc() { String webserviceurl = "http://58.53.194.143:9081/TerminalLocationService"; String SPID = "18100152"; // SPID "18100153"; "18100152" String Token = "whtyxsgj"; // 密钥 "9731D853835EF670292F1AFD524AB90C"; "whtyxsgj" String timeStamp = "2010101100"; String DestNum = "tel:18986262090"; // 发送号码 "tel:13387559210" "tel:18986262090" //String ProductID = "1350190202012345603"; // 产品编号 //String ServiceID = "21位的业务编号,2开头"; // 业务编号 //String TimeStamp = dateString(); // 当前时间 //String senderName = "10620000"; // 短信主叫号码,在浙江ISAG实际无效,ISAG会读 int requestedAccuracy = 300; int acceptableAccuracy = 300; //http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1 SOAPHeaderElement SoapHeader = new SOAPHeaderElement( "http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", "RequestSOAPHeader"); LocationInfo locInfo = null; try { /* 初始化Web Service Client */ TerminalLocationServiceLocator tlsl = new TerminalLocationServiceLocator(); tlsl.setTerminalLocationEndpointAddress(webserviceurl); TerminalLocation tl = tlsl.getTerminalLocation(new java.net.URL(webserviceurl)); /* 设置SOAP Header */ SoapHeader.addChildElement("spId").addTextNode(SPID); // SpID SoapHeader.addChildElement("timeStamp").addTextNode(timeStamp); String spPwd = (SPID + Token + timeStamp).trim(); String md5Encry = MD5.compile(spPwd).toUpperCase();// MD5加密 SoapHeader.addChildElement("spPassword").addTextNode(md5Encry);// SoapHeader.addChildElement("FA").addTextNode(DestNum); SoapHeader.addChildElement("OA").addTextNode(DestNum); SoapHeader.addChildElement("multicastMessaging").addTextNode("false"); // SoapHeader.addChildElement("productId").addTextNode(ProductID); // SoapHeader.addChildElement("multiFlag").addTextNode("1"); // SoapHeader.addChildElement("protoFlag").addTextNode("4"); // SoapHeader.addChildElement("cmdId").addTextNode("1"); // SoapHeader.addChildElement("updown").addTextNode("1"); // SoapHeader.addChildElement("dlgIndex").addTextNode("-1"); // SoapHeader.addChildElement("ReqId").addTextNode("1918010D100917090943000477E"); // SoapHeader.addChildElement("SpIp").addTextNode("58.53.194.148"); // SoapHeader.addChildElement("scsId").addTextNode("1222"); // SoapHeader.addChildElement("multiAll").addTextNode("1"); // SoapHeader.addChildElement("multiCur").addTextNode("1"); // SoapHeader.addChildElement("sp_flux").addTextNode("1"); // SoapHeader.addChildElement("app_flux").addTextNode("1"); ((TerminalLocationBindingStub) tl).setHeader(SoapHeader); // 添加SOAP头 /* 设置被叫号码 */ org.apache.axis.types.URI address = new org.apache.axis.types.URI(); address = new org.apache.axis.types.URI(DestNum); /* 发送短信 */ System.out.println("starting getLoc>>>>>>>>>>>>>>>>>>"); locInfo = tl.getLocation(address, requestedAccuracy,acceptableAccuracy); System.out.println("ending getLoc>>>>>>>>>>>>>>>>>>"); System.out.println("Latitude: " + locInfo.getLatitude() + "\n" + "Longitude: " + locInfo.getLongitude()); } catch (cn.com.chinatelecom.www.schema.ctcc.common.v2_1.ServiceException e) { // 鉴权失败 System.out.println("ServiceException is happened>>>>>>>"); System.out.println("MessageId:" + e.getMessageId()); System.out.println("Text:" + e.getText()); // String[] variables = e.getVariables(); // for (int i = 0; i < variables.length; i++) { // System.out.println("Variable:" + variables[i]); // } } catch (cn.com.chinatelecom.www.schema.ctcc.common.v2_1.PolicyException e) { System.out.println("PolicyException is happened>>>>>>>"); System.out.println("MessageId:" + e.getMessageId()); System.out.println("Text:" + e.getText()); e.printStackTrace(); // String[] variables = e.getVariables(); // for (int i = 0; i < variables.length; i++) { // System.out.println("Variable:" + variables[i]); // } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } catch (SOAPException e) { e.printStackTrace(); } catch (MalformedURIException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); System.out.println("Text:" + e.getMessage()); } return locInfo; } private static String dateString() { SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss"); return sdf.format(new Date()); } private static String getTimeStamp() { SimpleDateFormat sdf = new SimpleDateFormat("MMDDHHMMSS"); return sdf.format(new Date()); } public static void main(String[] args) { new TerminalLocationTest().getLoc(); //System.out.println(getTimeStamp()); //System.out.println(dateString()); } }