provision接口 作者:Mouse 用Java写的,不知道你能用上不能.这是主要的类,需要的类,都是一些工具方法,你自己写吧,主要是对soap包进行解析的.package com.cellcom.wap.fala.common ;import java.io.BufferedReader ;import java.io.IOException ;import java.io.PrintWriter ;import javax.Servlet.ServletException ;import javax.servlet.http.HttpServlet ;import javax.servlet.http.HttpServletRequest ;import javax.servlet.http.HttpServletResponse ;import javax.XML.parsers.DocumentBuilder ;import javax.xml.parsers.DocumentBuilderFactory ;import javax.xml.parsers.FactoryConfigurationError ;import javax.xml.parsers.ParserConfigurationException ;import org.w3c.dom.Document ;import org.xml.sax.InputSource ;import org.xml.sax.SAXException ;import com.cellcom.common.wap.mobile.misc.DOMParsing ;import com.cellcom.common.wap.mobile.misc.DSMPServiceProv ;import com.cellcom.common.wap.mobile.misc.SyncOrderRelationResp ;import com.cellcom.common.wap.mobile.misc.UnSubscribeServiceResp ;import com.cellcom.common.wap.mobile.misc.ProvTransInterface ;/**//*** Title: wap.fala.cn* Description: 接收* Copyright: Copyright (c) 2005* Company: www.cellcom.com.cn* @author cabin* @version 1.0*/public class Provision extends HttpServlet { public Provision() { } private static final String CONTENT_TYPE = "text/xml" ; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE) ; DSMPServiceProv prov = this.parseReq(request) ; if (prov != null) { this.logAndSync(prov); this.respReq(response,prov,0); } } /**//** * 将请求的SOAP包进行解析封装 * @param request * @return */ private DSMPServiceProv parseReq(HttpServletRequest request) { DSMPServiceProv prov = null ; Document doc = null ; try { BufferedReader br = request.getReader() ; DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance() ; DocumentBuilder builder = factory.newDocumentBuilder() ; doc = builder.parse(new InputSource(br)) ; DOMParsing.printNode(doc, " ") ; doc.normalize() ; //对包进行解析,得到相应的包的内容PROV prov = DSMPServiceProv.ParseSoapXml(doc) ; } catch (SAXException ex) { System.out.println("## error SAXException:"+ex.toString()); } catch (ParserConfigurationException ex) { System.out.println("## error ParserConfigurationException:"+ex.toString()); } catch (FactoryConfigurationError ex) { System.out.println("## error FactoryConfigurationError:"+ex.toString()); } catch (IOException ex) { System.out.println("## error IOException:"+ex.toString()); } return prov; } public void logAndSync(DSMPServiceProv prov){ //业务处理 // 状态管理命令结果 errState : 0 命令成功; -1 无效的action_id;-2 无效的service_id //(其它任何非0值) 命令失败; //action : 1 开通; 2 停止; 3 激活 4 暂停 ProvTransInterface provtrans = new ProvTransHandler() ; provtrans.logProvTrans(prov) ; provtrans.SyncProv(prov) ; } public void respReq(HttpServletResponse response,DSMPServiceProv prov,int errState){ String sb = null ; PrintWriter out = null ; try { out = response.getWriter() ; } catch (IOException ex) { System.out.println(ex.toString()); } if ("SyncOrderRelationReq".equals(prov.getMsgType())) { sb = SyncOrderRelationResp.getResp(errState, prov.getTransactionID()) ; } else if ("UnSubscribeServiceReq".equals(prov.getMsgType())) { sb = UnSubscribeServiceResp.getResp(errState, prov.getTransactionID()) ; } out.print(sb.toString()) ; out.flush() ; out.close() ; }} 标题: Re:provision接口 作者:Mouse 时间:06-02-05 16:18 附件: 移动WAP同步关系provision接口的实现 前阵做的小WAP项目 写的东西也挺烂的 功能就不说了 做WAP的都明白公布出完成的PROVISION接口代码和数据表格式package com.wap.provision;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import data.DTime;public class Provision extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet{ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con; con = (Connection)this.getServletContext().getAttribute("con");//从容器里里获得数据库连接 DTime dtime = new DTime();//获取当前时间 System.out.println("Provision start at " + dtime.getDTime()); ServletInputStream in = request.getInputStream();//得到InputStream PrintWriter out = response.getWriter();//得到Writer Anatomy tempAnatomy = new Anatomy(in, out, con);//将数据流放入解析器 System.out.println("data input Anatmomy"); }} --------------------------------------------------------------------------------package com.wap.provision;import java.io.PrintWriter;import java.sql.Connection;import java.sql.SQLException;import javax.servlet.ServletInputStream;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import data.DTime;import data.DataBean;public class Anatomy{ private String TransactionID = "";// 该消息编号 private String MsgType = "";// 消息类型 private String LinkID = "";// 临时订购关系的事务ID private String Version = "";// 该接口消息的版本号 private String ActionID = "";// 服务状态管理动作代码 private String ActionReasonID = "";// 产生服务状态管理动作原因的代码 private String SPID = "";// 企业代码 private String SPServiceID = "";// 服务代码 private String AccessMode = "";// 访问模式 private String FeatureStr = "";// 服务订购参数 private String Send_DeviceType = "";// 发送方地址 private String Send_DeviceID = ""; private String Dest_DeviceType = "";// 接收方地址 private String Dest_DeviceID = ""; private String Fee_UserIDType = "";// 计费用户标识 private String Fee_MSISDN = ""; private String Fee_PseudoCode = "";// 记费用户MID private String Dest_UserIDType = ""; private String Dest_MSISDN = ""; private String Dest_PseudoCode = ""; private String hRet = "";// 返回值 private ServletInputStream in; private PrintWriter out; private Document document; private Connection con; private String[][] relation;//已存在的订购关系 private String[][] pause;//已经暂停的订购关系 String delete_Sql_Relation; String delete_Sql_Pause; String relation_sql; String pause_sql; public Anatomy(ServletInputStream In, PrintWriter Out, Connection con) { try { this.in = In; this.out = Out; this.con = con; this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(this.in); getReqInfo();// 将各个字段付值 if (Fee_UserIDType.equals("1"))// Fee_UserIDType为1用MID,2为违代码 { relation_sql = "select * from Relation where SPServiceID = '" + SPServiceID + "' and Fee_MSISDN ='" + Fee_MSISDN + "'"; pause_sql = "select * from Pause where SPServiceID = '" + SPServiceID + "' and Fee_MSISDN ='" + Fee_MSISDN + "'"; delete_Sql_Relation = "DELETE FROM Relation WHERE SPServiceID = '" + SPServiceID + "' and Fee_MSISDN ='" + Fee_MSISDN + "'"; delete_Sql_Pause = "DELETE FROM Pause WHERE SPServiceID = '" + SPServiceID + "' and Fee_MSISDN ='" + Fee_MSISDN + "'"; } else { relation_sql = "select * from Relation where SPServiceID = '" + SPServiceID + "' and Fee_PseudoCode ='" + Fee_PseudoCode + "'"; pause_sql = "select * from Pause where SPServiceID = '" + SPServiceID + "' and Fee_PseudoCode ='" + Fee_PseudoCode + "'"; delete_Sql_Relation = "DELETE FROM Relation WHERE SPServiceID = '" + SPServiceID + "' and Fee_PseudoCode ='" + Fee_PseudoCode + "'"; delete_Sql_Pause = "DELETE FROM Pause WHERE SPServiceID = '" + SPServiceID + "' and Fee_PseudoCode ='" + Fee_PseudoCode + "'"; } relation = DataBean.getResultToArray(con, relation_sql);//得到当前的一该业务已订购的关系 System.out.print("Reveice "); String[] InfoArray = this.getInfoArray();//将字段组合成数组 DataBean.InsertTable(con, "AllReceive", InfoArray);// 插入同步数据库做记录 System.out.println(); this.sendBack(this.getHRet());//返回状态值 } catch (Exception e) { this.sendBack("1");// 未知错误 e.printStackTrace(); } } private void getReqInfo()// 将各字段付值 { TransactionID = getNodeValue("TransactionID", 0); MsgType = getNodeValue("MsgType", 0); LinkID = getNodeValue("LinkID", 0); Version = getNodeValue("Version", 0); ActionID = getNodeValue("ActionID", 0); ActionReasonID = getNodeValue("ActionReasonID", 0); SPID = getNodeValue("SPID", 0); SPServiceID = getNodeValue("SPServiceID", 0); AccessMode = getNodeValue("AccessMode", 0); FeatureStr = getNodeValue("FeatureStr", 0); Send_DeviceType = getNodeValue("DeviceType", 0); Send_DeviceID = getNodeValue("DeviceID", 0); Dest_DeviceType = getNodeValue("DeviceType", 1); Dest_DeviceID = getNodeValue("DeviceID", 1); Fee_UserIDType = getNodeValue("UserIDType", 0); Fee_MSISDN = getNodeValue("MSISDN", 0); Fee_PseudoCode = getNodeValue("PseudoCode", 0); Dest_UserIDType = getNodeValue("UserIDType", 1); Dest_MSISDN = getNodeValue("MSISDN", 1); Dest_PseudoCode = getNodeValue("PseudoCode", 1); } private String getNodeValue(String TagName, int index) { if (document.getElementsByTagName(TagName) != null && document.getElementsByTagName(TagName).item(index) != null && document.getElementsByTagName(TagName).item(index).getFirstChild() != null) { String value = document.getElementsByTagName(TagName).item(index).getFirstChild().getNodeValue(); System.out.print(" " + TagName + " = " + value); return value; } else { System.out.print(" " + TagName + " = null"); return ""; } } private String getHRet() { try { if (!MsgType.equalsIgnoreCase("SyncOrderRelationReq")) { return "4000";// 无效的MsgType } else if ((Integer.parseInt(ActionReasonID) > 4) || (Integer.parseInt(ActionReasonID) < 1)) { return "4002";// 无效的ActionReasonID } else if ((Integer.parseInt(AccessMode) > 3) || (Integer.parseInt(AccessMode) < 1)) { return "4006";// 无效的AccessMode } else if ((Fee_MSISDN == null) && (Fee_PseudoCode == null)) { return "1"; } int id = Integer.parseInt(ActionID); switch (id) // relation==null 该消息在关系表无记录 pause==null // 该消息在暂停表无记录 { case 1: { if (relation == null) { String[] InfoArray = this.getInfoArray();// 订购成功 // 插入关系表 DataBean.InsertTable(con, "Relation", InfoArray);// 插入同步数据库做记录 return "0"; } else { return "4007";// Misc同步开通服务,但sp端以存在订购关系,且状态为开通 } } case 2: { if (relation == null) { return "4011";// Misc同步停止服务,但sp端不存在订购关系 } else if (relation != null) { DataBean.deleteRow(con, delete_Sql_Relation); return "0"; } else return "1"; } case 3: { pause = DataBean.getResultToArray(con, pause_sql); if ((relation == null) && (pause == null)) { return "4016";// Misc平台激活服务,但SP端不存在订购关系 } else if ((relation != null) && (pause == null)) { return "4015";// Misc平台激活服务,但SP端已存在订购关系,切状态为开通 } else if (pause != null) { DataBean.InsertTable(con, "Relation", pause[0]); DataBean.deleteRow(con, delete_Sql_Pause); return "0";// 成功 } else return "1"; } case 4: { pause = DataBean.getResultToArray(con, pause_sql); if ((relation == null) && (pause == null)) { return "4013";// Misc平台暂停服务,但SP端不存在订购关系 } else if (pause != null) { return "4014";// Misc平台暂停服务,但SP端存在订购关系,//切状态为暂停 } else if ((relation != null) && (pause == null)) { DataBean.InsertTable(con, "Pause", relation[0]); DataBean.deleteRow(con, delete_Sql_Relation); return "0"; } else return "1"; } default: { return "4001"; } } } catch (SQLException e) { return "1";// 未知错误 } } private void sendBack(String hRet) { out.println(""); out.println(""); out.println(""); out.println("" + TransactionID + ""); out.println(""); out.println(""); out.println(""); out.println("1.5.0"); out.println("SyncOrderRelationResp"); out.println("" + hRet + ""); out.println(""); out.println(""); out.println(""); String[] sendInfo = { TransactionID, hRet, new DTime().getDTime() }; System.out.println("Send TransactionID = " + TransactionID + " hRet = " + hRet); DataBean.InsertTable(con, "AllSend", sendInfo);// 将发送数据插入发送记录表 out.close(); } private String[] getInfoArray() { String[] InfoArray = { TransactionID, MsgType, LinkID, Version, ActionID, ActionReasonID, SPID, SPServiceID, AccessMode, FeatureStr, Send_DeviceType, Send_DeviceID, Dest_DeviceType, Dest_DeviceID, Fee_UserIDType, Fee_MSISDN, Fee_PseudoCode, Dest_UserIDType, Dest_MSISDN, Dest_PseudoCode, new DTime().getDTime() }; return InfoArray; }} --------------------------------------------------------------------------------里面涉及的一数据库操作的类package data;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.Enumeration;import java.util.Hashtable;public class DataBean{ // 将数组按单元插入数据库 返回插入行数 public static int InsertTable(Connection conn, String tableName, String[] rows) { try { Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); StringBuffer row = new StringBuffer(); int i; for (i = 0; i < rows.length - 1; i++) { row.append("'" + rows[i] + "'" + ","); } row.append("'" + rows[i] + "'"); String sql = "INSERT INTO " + tableName + " VALUES (" + new String(row) + ")"; int rowcount = stmt.executeUpdate(sql); stmt.close(); return rowcount; } catch (SQLException e) { System.out.println("Insert Table " + tableName + " Error"); e.printStackTrace(); return -1; } } // 按条件删除 返回删除的行数 public static int deleteRow(Connection conn, String sql) { try { Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); //stmt.execute(sql); int rows = stmt.executeUpdate(sql); stmt.close(); return rows; } catch (SQLException e) { System.out.println("delete sql = " + sql + " ERROR"); e.printStackTrace(); return -1; } } // 给定sql返回2唯数组结果 public static String[][] getResultToArray(Connection conn, String sql) throws SQLException { Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery(sql); if (DataBean.getRowCounts(rs) == 0) return null; ResultSetMetaData rsmd = rs.getMetaData(); int rows = DataBean.getRowCounts(rs); String[][] Information = new String[rows][rsmd.getColumnCount() - 1]; while (rs.next()) { if (rs.getRow() > rows) break; for (int j = 0; j < rsmd.getColumnCount() - 1; j++) { Information[rs.getRow() - 1][j] = rs.getString(j + 2);// 我的数据表都有自动增长的ID 做主键 我不取它 getString从1开始取,第1字段为ID号,故+2 } } rs.close(); stmt.close(); return Information; } public static int getRowCounts(ResultSet rs) { int counts = 0; try { while (rs.next()) { counts++; } rs.beforeFirst(); return counts; } catch (Exception e) { System.out.println("getRowCounts ERROR"); e.printStackTrace(); return -1; } } public static Connection getConnection(String dbname, String user, String password) throws SQLException, Exception { Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver");//我用的MS SQL String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=" + dbname; Connection conn = DriverManager.getConnection(url, user, password); return conn; }} --------------------------------------------------------------------------------数据库库中的表结构CREATE TABLE [dbo].[AllReceive] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [TransactionID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [MsgType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [LinkID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Version] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [ActionID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [ActionReasonID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [SPID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [SPServiceID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [AccessMode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [FeatureStr] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Send_DeviceType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Send_DeviceID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Dest_DeviceType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Dest_DeviceID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Fee_UserIDType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Fee_MSISDN] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Fee_PseudoCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Dest_UserIDType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Dest_MSISDN] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [Dest_PseudoCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [DTime] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) 其中再创建两张结构相同的表 这三张分别是AllReceive 存放所有provision request数据Relation 当前已经存在的订阅关系 Pause 当前已暂停的订阅关系CREATE TABLE [dbo].[AllSend] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [TransactionID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [hRet] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [DTime] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL )这个表存放所有的返回状态代码 //该部分代码基本上满足要求,可以不作改动;//SP收到同步请求包后,对订购请求做相应的订购关系处理,并返回订购关系同步应答SyncOrderRelationResp//MISC收到应答包后,根据返回结果是否正确,在系统中生成正式的订购关系或者取消订购关系,并由1862系统给用户下发订购成功或取消成功的提醒消息//SyncOrderRelationResp消息字段描述://字段名 重要性 类型 说明//MsgType 必须 string 消息类型//TransactionID 必须 string 该消息编号//Version 必须 string 该接口消息的版本号,本次所有的接口消息的版本都为“1.5.0”//hRet 必须 integer 返回值,主要错误如下://0:成功//4007: MISC 同步开通服务,但SP 端已存在订购关系,且状态为开通 //4008: MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败 //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败 //4011: MISC 同步停止服务, 但SP 端不存在订购关系 //4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败 //4013: MISC 同步暂停服务, 但SP 端不存在订购关系 //4015: MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通 //4016: MISC 同步激活服务, 但SP 端不存在订购关系 //其它错误请参见《MISC系统短信SP接入指南-接口改造分册》。xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dsmp="http://www.monternet.com/dsmp/schemas/"> SyncOrderRelationResp 标题: Re:provision接口 作者:Mouse 时间:06-02-05 16:21 附件: 用.asmx实现的provision接口 下面是用.net做的Webservice的订购接口的代码,用不着什么卓望的API啦、socket啦、自己解析xml啦。反正出来的效果跟卓望文档附录里面的那个实例差不多啦。我自己没测过。而且卓望文档里有些问题描述的不清楚,只能蒙着做啦。反正我觉得他们有的地方设计的不太好,如果是我我不会那么设计的。using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml;using System.Xml.Serialization;using System.Web.Services.Description;namespace Provision{[XmlRoot(Namespace="http://www.monternet.com/dsmp/schemas/")]public class TransactionID: SoapHeader{ [XmlText(typeof(string))] public string ID;}public class UserID{ public int UserIDType; public string MSISDN; public string PseudoCode;}[XmlRoot(Namespace="http://aaa.com/")]public class AddressInfo{ public int DeviceType; public string DeviceID;}public class SyncOrderRelationResp{ public string Version; public string MsgType; public int hRet;}/**//// /// Summary description for Service1./// [WebService(Namespace="http://12345.com.cn")][SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]public class Provision : System.Web.Services.WebService{ public Provision() { //CODEGEN: This call is required by the ASP.NET Web Services Designer InitializeComponent(); } Component Designer generated code#region Component Designer generated code //Required by the Web Services Designer private IContainer components = null; /**//// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { } /**//// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if(disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } #endregion // WEB SERVICE EXAMPLE // The HelloWorld() example service returns the string Hello World // To build, uncomment the following lines then save and build the project // To test this web service, press F5 public TransactionID transID; [WebMethod] [SoapHeader("transID", Direction=SoapHeaderDirection.InOut)] [SoapDocumentMethod("",RequestElementName="SyncOrderRelationReq",ResponseElementName="SyncOrderRelationResp")] [return: System.Xml.Serialization.SoapElementAttribute("return")] public void SyncOrderRelationReq( ref string Version , ref string MsgType, AddressInfo Send_Address, AddressInfo Dest_Address, UserID FeeUser_ID, UserID DestUser_ID, string LinkID, int ActionID, int ActionReasonID, string SPID, string SPServiceID, int AccessMOde, byte[] FeatureStr, out int hRet ) { Version="1.5.0"; MsgType = "SyncOrderRelationResp"; hRet = 0; }}}看明白了不? 标题: Re:provision接口 作者:Mouse 时间:06-02-05 16:21 附件: 例子:没经过MISC测试 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">xmlns="http://www.monternet.com/dsmp/schemas/">xmlns="http://www.monternet.com/dsmp/schemas/">1.5.0SyncOrderRelationResp //function.asp'--------取得XML流--------function getdata(url)dim Httpset Http=server.createobject("MSXML2.XMLHTTP")Http.open "GET",url,falseHttp.setrequestHeader "Accept-Language","zh-cn"Http.send()if Http.readystate<>4 then exit functionend if getdata=Http.responseBody set http=nothingif err.number<>0 then err.Clear end function'---------取得XML节点值,rootnode->父节点,node_name->节点名---------function node_value(rootnode,node_name)node_value="" set recordlist=objXML.getElementsByTagName(rootnode) node_value=recordlist(0).selectSingleNode(node_name).Text set recordlist=nothing end function'------SPServiceID->业务代码,FeeUser_MSISDN->手机号-----------------------------'------PROVISION接口业务处理函数'用户订购服务function user_reGISter(SPServiceID,FeeUser_MSISDN)end function'用户停止服务function user_stop(SPServiceID,FeeUser_MSISDN)end function'用户激活服务function user_active(SPServiceID,FeeUser_MSISDN)end function'用户暂停服务function user_pause(SPServiceID,FeeUser_MSISDN)end function xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">xmlns="http://www.monternet.com/dsmp/schemas/">xmlns="http://www.monternet.com/dsmp/schemas/">1.5.0SyncOrderRelationResp 标题: Re:provision接口 作者:Mouse 时间:06-02-05 16:22 附件: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.IO;using System.Text;using System.Diagnostics;using System.Web;using System.Web.Services;using System.Web.SessionState;using System.Web.Services.Protocols;using System.Xml;using System.Xml.Schema;using System.Xml.Serialization;using System.Web.Services.Description;namespace Provision{/**//// /// dsmp 的摘要说明。/// [WebService(Namespace="http://www.monternet.com/dsmp/schemas/")]public class Provision : System.Web.Services.WebService{public Provision(){InitializeComponent();}组件设计器生成的代码#region 组件设计器生成的代码//Web 服务设计器所必需的private IContainer components = null;/**//// /// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。/// private void InitializeComponent(){}/**//// /// 清理所有正在使用的资源。/// protected override void Dispose( bool disposing ){if(disposing && components != null){components.Dispose();}base.Dispose(disposing); }#endregionpublic TransactionID transID;[WebMethod][SoapHeader("transID", Direction=SoapHeaderDirection.InOut)][SoapDocumentMethod("sim.SyncOrderRelation",RequestElementName="SyncOrderRelationReq",ResponseElementName="SyncOrderRelationResp",Use=System.Web.Services.Description.SoaPBindingUse.Literal)][return: System.Xml.Serialization.SoapElementAttribute("return")]public void SyncOrderRelation([XmlElement(Form=XmlSchemaForm.Unqualified)]ref string Version ,[XmlElement(Form=XmlSchemaForm.Unqualified)]ref string MsgType,[XmlElement(Form=XmlSchemaForm.Unqualified)]AddressInfo Send_Address,[XmlElement(Form=XmlSchemaForm.Unqualified)]AddressInfo Dest_Address,[XmlElement(Form=XmlSchemaForm.Unqualified)]UserID FeeUser_ID,[XmlElement(Form=XmlSchemaForm.Unqualified)]UserID DestUser_ID,[XmlElement(Form=XmlSchemaForm.Unqualified)]string LinkID,[XmlElement(Form=XmlSchemaForm.Unqualified)]int ActionID,[XmlElement(Form=XmlSchemaForm.Unqualified)]int ActionReasonID,[XmlElement(Form=XmlSchemaForm.Unqualified)]string SPID,[XmlElement(Form=XmlSchemaForm.Unqualified)]string SPServiceID,[XmlElement(Form=XmlSchemaForm.Unqualified)]int AccessMode,[XmlElement(Form=XmlSchemaForm.Unqualified)]byte[] FeatureStr,[XmlElement(Form=XmlSchemaForm.Unqualified)]out int hRet){Version="1.5.0";hRet = 0; MsgType = "SynOrderRelationReq";}}[XmlRoot(Namespace="http://www.monternet.com/dsmp/schemas/")]public class TransactionID: SoapHeader{[XmlText(typeof(string))]public string ID;}public class UserID{[XmlElement(Form=XmlSchemaForm.Unqualified)]public int UserIDType;[XmlElement(Form=XmlSchemaForm.Unqualified)]public string MSISDN;[XmlElement(Form=XmlSchemaForm.Unqualified)]public byte[] PseudoCode;}public class AddressInfo{[XmlElement(Form=XmlSchemaForm.Unqualified)]public int DeviceType;[XmlElement(Form=XmlSchemaForm.Unqualified)]public string DeviceID;}}