Provision,webservice怎么接收dsmp发过来的包?
webservice实现了的Provision接口,不明白服务如何接收数据包。
dsmp请求的是个类似下面Url的Url
[url]http://www.url.com:7000[/url]
在服务器上该地址已指向webservice文件
在那里接收,对webservice了解不多。
谢谢!~
基本代码如下:
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;
using System.IO;
using System.Text;
namespace Provision
{
/// <summary>
/// Dsmp 的摘要说明。
/// </summary>
///
[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;
}
public class AddressInfo
{
public int DeviceType;
public string DeviceID;
}
public class SyncOrderRelationResp
{
public string Version;
public string MsgType;
public int hRet;
}
[WebService(Namespace="http://www.monternet.com/dsmp/schemas/")]
[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]
public class Provision : System.Web.Services.WebService
{
public Provision()
{
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
组件设计器生成的代码
public TransactionID transID;
public TextWriter w;
/// <summary>
/// 正向订购服务
/// </summary>
/// <param name="Version"></param>
/// <param name="MsgType"></param>
/// <param name="Send_Address"></param>
/// <param name="Dest_Address"></param>
/// <param name="FeeUser_ID"></param>
/// <param name="DestUser_ID"></param>
/// <param name="LinkID"></param>
/// <param name="ActionID"></param>
/// <param name="ActionReasonID"></param>
/// <param name="SPID"></param>
/// <param name="SPServiceID"></param>
/// <param name="AccessMOde"></param>
/// <param name="FeatureStr"></param>
/// <param name="hRet"></param>
[WebMethod]
[SoapHeader("transID", Direction=SoapHeaderDirection.InOut)]
[SoapDocumentMethod("sim.SyncOrderRelation",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
// 下面是业务处理
}
}
aden 2006-12-22 11:25
用ProvisionClient.exe模拟测试,在本地可以正常接收请求并返回数据包,
在公网上请求正常,返回错误,
下面是返回包:
2006-12-22 11:23:19
返回Resp了:
2006-12-22 11:23:19
HTTP/1.1 405 Method not allowed
Server: Microsoft-IIS/5.0
Date: Fri, 22 Dec 2006 03:23:19 GMT
Allow: OPTIONS, TRACE, GET, HEAD
Content-Length: 3647
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
<head>
<style> a:link {font:9pt/11pt 宋体; color:FF0000} a:visited {font:9pt/11pt 宋体; color:#4e4e4e}
</style>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<title>网页无法显示</title>
<META HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312">
<META NAME="MS.LOCALE" CONTENT="ZH-CN">
</head>
<script>
function Homepage(){
<!--
// in real bits, urls get returned to our script like this:
// res://shdocvw.dll/http_404.htm#[url]http://www.DocURL.com/bar.htm[/url]
//For testing use DocURL = "res://shdocvw.dll/http_404.htm#[url]https://www.microsoft.com/bar.htm[/url]"
DocURL=document.URL;
//this is where the http or https will be, as found by searching for :// but skipping the res://
protocolIndex=DocURL.indexOf("://",4);
//this finds the ending slash for the domain server
serverIndex=DocURL.indexOf("/",protocolIndex + 3);
//for the href, we need a valid URL to the domain. We search for the # symbol to find the begining
//of the true URL, and add 1 to skip it - this is the BeginURL value. We use serverIndex as the end marker.
//urlresult=DocURL.substring(protocolIndex - 4,serverIndex);
BeginURL=DocURL.indexOf("#",1) + 1;
urlresult=DocURL.substring(BeginURL,serverIndex);
//for display, we need to skip after http://, and go to the next slash
displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);
InsertElementAnchor(urlresult, displayresult);
}
function HtmlEncode(text)
{
return text.replace(/&/g, '&').replace(/'/g, '"').replace(/</g, '<').replace(/>/g, '>');
}
function TagAttrib(name, value)
{
return ' '+name+'="'+HtmlEncode(value)+'"';
}
function PrintTag(tagName, needCloseTag, attrib, inner){
document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner) );
if (needCloseTag) document.write( '</' + tagName +'>' );
}
function URI(href)
{
IEVer = window.navigator.appVersion;
IEVer = IEVer.substr( IEVer.indexOf('MSIE') + 5, 3 );
return (IEVer.charAt(1)=='.' && IEVer >= '5.5') ?
encodeURI(href) :
escape(href).replace(/%3A/g, ':').replace(/%3B/g, ';');
}
function InsertElementAnchor(href, text)
{
PrintTag('A', true, TagAttrib('HREF', URI(href)), text);
}
//-->
</script>
<body bgcolor="FFFFFF">
<table width="410" cellpadding="3" cellspacing="5">
<tr>
<td align="left" valign="middle" width="360">
<h1 style="COLOR:000000; FONT: 12pt/15pt 宋体"><!--Problem-->网页无法显示</h1>
</td>
</tr>
<tr>
<td width="400" colspan="2"> <font style="COLOR:000000; FONT: 9pt/11pt 宋体">网页地址不正确,因此您要寻找的网页无法显示。</font> </td>
</tr>
<tr>
<td width="400" colspan="2"> <font style="COLOR:000000; FONT: 9pt/11pt 宋体">
<hr color="#C0C0C0" noshade>
<p>请尝试下列操作:</p>
<ul>
<li>如果您在“地址”栏中键入了网页地址,请检查地址输入是否正确。<br>
</li>
<li>打开 <script>
<!--
if (!((window.navigator.userAgent.indexOf("MSIE") > 0) && (window.navigator.appVersion.charAt(0) == "2")))
{
Homepage();
}
//-->
</script> 主页,寻找指向所需信息的链接。</li>
</ul>
<h2 style="COLOR:000000; FONT: 9pt/11pt 宋体">HTTP 405 - 资源被禁止<br> Internet 信息服务</h2>
<hr color="#C0C0C0" noshade>
<p>技术信息(支持个人)</p>
<ul>
<li>详细信息:<br><a href="http://www.microsoft.com/ContentRedirect.asp?prd=iis&sbp=&pver=5.0&pid=&ID=405&cat=web&os=&over=&hrd=&Opt1=&Opt2=&Opt3=" target="_blank">Microsoft 支持</a>
</li>
</ul>
</font></td>
</tr>
</table>
</body>
</html>
2006-12-22 11:23:19
返回的RESP数据有错误
2006-12-22 11:23:19
MsgType:
TransactionID:
Version:
hRet:
2006-12-22 11:23:19
连接断开了