c#调用华为cmpp api的问题

epngllh 2009-12-19 08:42:24
有谁做过华为cmpp api的开发,我现在出现问题了
在声明函数SubmitAExEx,并调用时,出现21错误,根据说明文档是用户数据错误,请做过的朋友指点一下。
函数原型如下:

int WINAPI SubmitAExEx(unsigned char OrgTON, unsigned char OrgNPI, LPCSTR OrgAddr,
unsigned char DestTON, unsigned char DestNPI, LPCSTR DestAddr,
unsigned char PRI, unsigned char RD, unsigned char RP,
unsigned char SRR, unsigned char MR, unsigned char DCS,
unsigned char PID, LPCSTR Schedule, LPCSTR Expire,
unsigned long Default_ID, unsigned char UDHI, unsigned long UDLen,
LPCSTR UserData, LPCSTR ServiceSubType,
unsigned char* byMsgID, unsigned char byPKTotal,
unsigned char byPKNumber, unsigned char byMsglevel,
unsigned char byFeeUserType, LPCSTR sSPID, LPCSTR sFeeType,
LPCSTR sFeeAddr, LPCSTR sFeeCode,unsigned char byUserNum,
LPCSTR sDestAddrs, unsigned long* SM_ID, unsigned char* FCS)
注:SubmitAExEx适用于CMPP协议(移动)


函数声明如下:

[DllImport("SMEIDLL.dll", EntryPoint ="SubmitAExEx")]
protected static extern int SubmitAExEx(char OrgTON, //如:8613912345678 应该填1 反之13912345678就应该填2
char OrgNPI, //源地址编码方案 缺省值一般为1
string OrgAddr,//源地址10657061011
char DestTON, //目标地址号码类型。取值同OrgTON,1
char DestNPI, //目标地址编码方案。取值同OrgNPI,1
string DestAddr, //目标地址
char PRI, //SM优先级,1 优先级别,0 缺省级别
char RD, //保留,设置为0
char RP, //回应路径,保留,设置为0
char SRR, //状态报告,保留,设置为0;需要状态报告时,设置为1
char MR, //消息索引,保留,设置为0
char DCS, //数据编码方案,对于一般的中文短消息应填8或15,对于传送铃声图片一般填4
char PID, //协议类型,缺省为0
string Schedule, //定时时间注意:时间格式必须为“yyyy/mm/dd hh:mm:ss”。缺省为NULL。如果使用的不是Smedll的API函数,请视情况而定,时间格式可能为
string Expire, //超时时间,注意:时间格式必须为“yyyy/mm/dd hh:mm:ss”。缺省为NULL
long Default_ID, //缺省短消息的信息码,缺省为0,注意:国标定义的缺省短消息的个数为100条
char UDHI, //用于长短消息,表示UserData是否是结构,0,UD是正常字符串,1,UD是结构
long UDLen,//表示UserData的长度,单位是字节
string UserData, //用户信息,短消息正文
string ServiceSubType, //业务类型,通过此值来判断计费.缺省值为NULL
string byMsgID,//CMPP的字段,消息ID
char byPKTotal, //相同Msg_id的消息总条数,从1开始
char byPKNumber,//相同Msg_id的消息序号,从1开始
char byMsglevel, //信息级别,缺省为0
char byFeeUserType, //计费用户类型字段,0:对目的终端MSISDN计费.1:对源终端MSISDN计费,2:对SP计费,3:表示本字段无效,注意对于SP来说此字段如果 填“1”则将导致计费失败
string sSPID, //信息内容来源(Src_ID) ,对应CMPP的 Msg_src
string sFeeType, //资费类别
string sFeeAddr, //被计费用户的号码
string sFeeCode,//资费代码,以分为单位
char byUserNum,//接收消息的用户数量
string sDestAddrs,//接收业务的MSISDN号码,最多100个MSISDN号码
out uint SM_ID,//返回短消息ID
out uint FCS//返回SC端失败原因
);



调用如下:
int sendreturn = SubmitAExEx('1', '1', "10657061011", '1', '1', "8613857656364", '0', '0', '0', '0', '0', '8', '0', null, null, 0, '0', 4, "1234", "ystjxt", "", '0', '0', '0', '3', "10657061011", "01", "8613857656364", "0", '1', "8613857656364", out smid, out sc);
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
峰来兮 2010-10-19
  • 打赏
  • 举报
回复
来看正确答案的~~
epngllh 2009-12-19
  • 打赏
  • 举报
回复
谢谢各位。
gomoku 2009-12-19
  • 打赏
  • 举报
回复
[DllImport("SMEIDLL.dll", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.StdCall)]
extern static int SubmitAExEx(
byte OrgTON, byte OrgNPI, string OrgAddr,
byte DestTON, byte DestNPI, string DestAddr,
byte PRI, byte RD, byte RP,
byte SRR, byte MR, byte DCS,
byte PID, string Schedule, string Expire,
uint Default_ID, byte UDHI, uint UDLen,
string UserData, string ServiceSubType,
StringBuilder byMsgID, byte byPKTotal,
byte byPKNumber, byte byMsglevel,
byte byFeeUserType, string sSPID, string sFeeType,
string sFeeAddr, string sFeeCode, byte byUserNum,
string sDestAddrs, ref uint SM_ID, StringBuilder FCS);
silentwins 2009-12-19
  • 打赏
  • 举报
回复
参数太多啦,先全部用System.Type.Missing,然后逐个改过来,看哪个出问题了

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧