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());
	}
}