C#:
dsmp.asmx
<%
@ WebService Language
=
"
c#
"
Codebehind
=
"
dsmp.asmx.cs
"
Class
=
"
Provision.Provision
"
%>
dsmp.asmx.cs
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
... {
/**//// <summary>
/// dsmp 的摘要说明。
/// </summary>
[WebService(Namespace="http://www.monternet.com/dsmp/schemas/")]
public class Provision : System.Web.Services.WebService
...{
public Provision()
...{
InitializeComponent();
}
组件设计器生成的代码#region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
}
/**//// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
...{
if(disposing && components != null)
...{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
public 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;
}
}
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
... {
/**//// <summary>
/// dsmp 的摘要说明。
/// </summary>
[WebService(Namespace="http://www.monternet.com/dsmp/schemas/")]
public class Provision : System.Web.Services.WebService
...{
public Provision()
...{
InitializeComponent();
}
组件设计器生成的代码#region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
}
/**//// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
...{
if(disposing && components != null)
...{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
public 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;
}
}
JAVA
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
<% @ page import = " java.io.* " %>
<% Connection conn = null ; %>
<% @ include file = " inc/page_db.jsp " %>
<%
String miscId = " 0999 " ; // MISC
int result = - 3 ;
try
... {
String xmldata = "";
//xmldata = request.getQueryString();
BufferedReader reader = request.getReader();
String s = "";
try...{
while((s=reader.readLine())!=null)
...{
xmldata += (s+" ");
}
}
catch(Exception e)...{}
reader.close();
xmldata = xmldata.trim();
log.debug(xmldata);
String mid = XMLParser.getXmlValue(xmldata,"mid");
String transId = getXmlValue(strXml,"TransactionID");
log.debug("mid:"+mid);
if(mid!=null && mid.trim().length()==14)
...{
mid = mid.trim();
String action = XMLParser.getXmlValue(xmldata,"ActionID");
if(action!=null)
...{
action = action.trim();
int ac = 0;
try
...{
ac = Integer.parseInt(action);
}
catch(Exception e)
...{
}
String serviceId = XMLParser.getXmlValue(xmldata,"SPServiceID");
//System.out.println("provision!mid:"+mid+" action_id:"+action+"service:"+serviceId);
//miscId = Misc.getUserArea(mid);
String mobile = XMLParser.getXmlValue(xmldata,"mobile_id");
if(mobile != null && mobile.length()<11)
...{
mobile = request.getParameter("HTTP_X_UP_CALLING_LINE_ID");
}
String accessMode = XMLParser.getXmlValue(xmldata,"AccessMode");
MonterWapUser user = new MonterWapUser(conn,mid,serviceId,miscId);
switch(ac)...{
case 1:
result = user.register(mobile,accessMode);
break;
case 2:
result = user.unregister();
break;
case 3:
result = user.activate();
break;
case 4:
result = user.pause();
break;
default:
result = -1;
break;
}
user.provLog(ac,accessMode);
}
}
}
catch (Exception e)
... {
} finally ... {
closeConn(conn);
}
String resultStr = result == 0 ? " sucess " : " fail " ;
%>
< SOAP - ENV:Envelope
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/ " >
< SOAP - ENV:Header >
< TransactionID
xmlns = " http://www.monternet.com/dsmp/schemas/ " ><%= transId %></ TransactionID >
</ SOAP - ENV:Header >
< SOAP - ENV:Body >
< SyncOrderRelationResp
xmlns = " http://www.monternet.com/dsmp/schemas/ " >
< Version > 1.5 . 0 </ Version >
< MsgType > SyncOrderRelationResp </ MsgType >
< hRet ><%= result %></ hRet >
</ SyncOrderRelationResp >
</ SOAP - ENV:Body >
</ SOAP - ENV:Envelope >
<% @ page import = " java.io.* " %>
<% Connection conn = null ; %>
<% @ include file = " inc/page_db.jsp " %>
<%
String miscId = " 0999 " ; // MISC
int result = - 3 ;
try
... {
String xmldata = "";
//xmldata = request.getQueryString();
BufferedReader reader = request.getReader();
String s = "";
try...{
while((s=reader.readLine())!=null)
...{
xmldata += (s+" ");
}
}
catch(Exception e)...{}
reader.close();
xmldata = xmldata.trim();
log.debug(xmldata);
String mid = XMLParser.getXmlValue(xmldata,"mid");
String transId = getXmlValue(strXml,"TransactionID");
log.debug("mid:"+mid);
if(mid!=null && mid.trim().length()==14)
...{
mid = mid.trim();
String action = XMLParser.getXmlValue(xmldata,"ActionID");
if(action!=null)
...{
action = action.trim();
int ac = 0;
try
...{
ac = Integer.parseInt(action);
}
catch(Exception e)
...{
}
String serviceId = XMLParser.getXmlValue(xmldata,"SPServiceID");
//System.out.println("provision!mid:"+mid+" action_id:"+action+"service:"+serviceId);
//miscId = Misc.getUserArea(mid);
String mobile = XMLParser.getXmlValue(xmldata,"mobile_id");
if(mobile != null && mobile.length()<11)
...{
mobile = request.getParameter("HTTP_X_UP_CALLING_LINE_ID");
}
String accessMode = XMLParser.getXmlValue(xmldata,"AccessMode");
MonterWapUser user = new MonterWapUser(conn,mid,serviceId,miscId);
switch(ac)...{
case 1:
result = user.register(mobile,accessMode);
break;
case 2:
result = user.unregister();
break;
case 3:
result = user.activate();
break;
case 4:
result = user.pause();
break;
default:
result = -1;
break;
}
user.provLog(ac,accessMode);
}
}
}
catch (Exception e)
... {
} finally ... {
closeConn(conn);
}
String resultStr = result == 0 ? " sucess " : " fail " ;
%>
< SOAP - ENV:Envelope
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/ " >
< SOAP - ENV:Header >
< TransactionID
xmlns = " http://www.monternet.com/dsmp/schemas/ " ><%= transId %></ TransactionID >
</ SOAP - ENV:Header >
< SOAP - ENV:Body >
< SyncOrderRelationResp
xmlns = " http://www.monternet.com/dsmp/schemas/ " >
< Version > 1.5 . 0 </ Version >
< MsgType > SyncOrderRelationResp </ MsgType >
< hRet ><%= result %></ hRet >
</ SyncOrderRelationResp >
</ SOAP - ENV:Body >
</ SOAP - ENV:Envelope >
ASP
<
!
--
#include file
=
function
.asp
-->
< %
url = " http://www.monternet.com/dsmp/schemas/ " ' dsmp地址
strxml = getdata(url)
Set objXML = Server.CreateObject( " MSXML2.DOMDocument " )
objXML.load(strxml)
' --------取出相关节点值--------
' 随机串
TransactionID = node_value( " SOAP-ENV:Header " , " TransactionID " )
' 用户手机
FeeUser_MSISDN = node_value( " FeeUser_ID " , " MSISDN " )
' 根据此值来判断用户的操作:1-开通服务;2-停止服务;3-激活服务;4-暂停服务
ActionID = node_value( " SyncOrderRelationReq " , " ActionID " )
' SP业务代码
SPServiceID = node_value( " SyncOrderRelationReq " , " SPServiceID " )
' 服务的访问方式:1-WEB 2-WAP 3-SMS.
AccessMode = node_value( " SyncOrderRelationReq " , " AccessMode " )
' 临时订购关系的事务ID
LinkID = node_value( " SyncOrderRelationReq " , " LinkID " )
select case ActionID
case 1 :result = user_register(SPServiceID,FeeUser_MSISDN) ' 用户订购服务
case 2 :result = user_stop(SPServiceID,FeeUser_MSISDN) ' 用户停止服务
case 3 :result = user_active(SPServiceID,FeeUser_MSISDN) ' 用户激活服务
case 4 :result = user_pause(SPServiceID,FeeUser_MSISDN) ' 用户暂停服务
case else :result =- 1
end select
' response.write actionid
set objXML = nothing
% >
< ?xml version = " 1.0 " encoding = " utf-8 " ? >
< SOAP - ENV:Envelope
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/ " >
< SOAP - ENV:Header >
< TransactionID
xmlns = " http://www.monternet.com/dsmp/schemas/ " >< % = TransactionID% ></ TransactionID >
</ SOAP - ENV:Header >
< SOAP - ENV:Body >
< SyncOrderRelationResp
xmlns = " http://www.monternet.com/dsmp/schemas/ " >
< Version > 1.5 . 0 </ Version >
< MsgType > SyncOrderRelationResp </ MsgType >
< hRet >< % = result% ></ hRet >
</ SyncOrderRelationResp >
</ SOAP - ENV:Body >
</ SOAP - ENV:Envelope >
// function .asp
' --------取得XML流--------
function getdata(url)
dim Http
set Http = server.createobject( " MSXML2.XMLHTTP " )
Http.open " GET " ,url, false
Http.setrequestHeader " Accept-Language " , " zh-cn "
Http.send()
if Http.readystate <> 4 then
exit function
end if
getdata = Http.responseBody
set http = nothing
if 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
' ------------------------------------------------------------------------------
% >
< %
url = " http://www.monternet.com/dsmp/schemas/ " ' dsmp地址
strxml = getdata(url)
Set objXML = Server.CreateObject( " MSXML2.DOMDocument " )
objXML.load(strxml)
' --------取出相关节点值--------
' 随机串
TransactionID = node_value( " SOAP-ENV:Header " , " TransactionID " )
' 用户手机
FeeUser_MSISDN = node_value( " FeeUser_ID " , " MSISDN " )
' 根据此值来判断用户的操作:1-开通服务;2-停止服务;3-激活服务;4-暂停服务
ActionID = node_value( " SyncOrderRelationReq " , " ActionID " )
' SP业务代码
SPServiceID = node_value( " SyncOrderRelationReq " , " SPServiceID " )
' 服务的访问方式:1-WEB 2-WAP 3-SMS.
AccessMode = node_value( " SyncOrderRelationReq " , " AccessMode " )
' 临时订购关系的事务ID
LinkID = node_value( " SyncOrderRelationReq " , " LinkID " )
select case ActionID
case 1 :result = user_register(SPServiceID,FeeUser_MSISDN) ' 用户订购服务
case 2 :result = user_stop(SPServiceID,FeeUser_MSISDN) ' 用户停止服务
case 3 :result = user_active(SPServiceID,FeeUser_MSISDN) ' 用户激活服务
case 4 :result = user_pause(SPServiceID,FeeUser_MSISDN) ' 用户暂停服务
case else :result =- 1
end select
' response.write actionid
set objXML = nothing
% >
< ?xml version = " 1.0 " encoding = " utf-8 " ? >
< SOAP - ENV:Envelope
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/ " >
< SOAP - ENV:Header >
< TransactionID
xmlns = " http://www.monternet.com/dsmp/schemas/ " >< % = TransactionID% ></ TransactionID >
</ SOAP - ENV:Header >
< SOAP - ENV:Body >
< SyncOrderRelationResp
xmlns = " http://www.monternet.com/dsmp/schemas/ " >
< Version > 1.5 . 0 </ Version >
< MsgType > SyncOrderRelationResp </ MsgType >
< hRet >< % = result% ></ hRet >
</ SyncOrderRelationResp >
</ SOAP - ENV:Body >
</ SOAP - ENV:Envelope >
// function .asp
' --------取得XML流--------
function getdata(url)
dim Http
set Http = server.createobject( " MSXML2.XMLHTTP " )
Http.open " GET " ,url, false
Http.setrequestHeader " Accept-Language " , " zh-cn "
Http.send()
if Http.readystate <> 4 then
exit function
end if
getdata = Http.responseBody
set http = nothing
if 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
' ------------------------------------------------------------------------------
% >