[错误内容]
未处理的“System.NullReferenceException”类型的异常出现在 cmppAPI_test.exe 中。其他信息: 未将对象引用设置到对象的实例[部分代码][函数定义]
public class API_SubmitSMS
{
[DllImport("LongSms.dll",EntryPoint="Cmpp_submitSMS",SetLastError=true,CharSet=CharSet.Unicode,ExactSpelling=true,CallingConvention=CallingConvention.Cdecl)]
public static extern int Cmpp_submitSMS
(
StringBuilder SMId,//1
StringBuilder Registered_Delivery ,//2
StringBuilder Msg_level ,//3
byte[] Service_Id ,//4
StringBuilder Fee_UserType ,//5
byte[] Fee_terminal_Id ,//6
StringBuilder Fee_terminal_type,//7
StringBuilder TP_udhi,//8
StringBuilder Msg_Fmt ,//9
byte[] Msg_src ,//10
byte[] FeeType ,//11
byte[] FeeCode ,//12
byte[] ValId_Time ,//13
byte[] At_Time ,//14
byte[] Src_Id ,//15
StringBuilder DestUsr_tl ,//16
byte[] Dest_terminal_Id ,//17
StringBuilder Dest_terminal_type,//18
StringBuilder Msg_Length ,//19
byte[] Msg_Content ,//20
StringBuilder LinkID,//21
StringBuilder Msg_Id,//22
ulong Result//23
);
}[调用]
//1
string s_SMID = "";
//byte[] s1 = System.Text.Encoding.Unicode.GetBytes(s_SMID);
System.Text.StringBuilder s1 = new System.Text.StringBuilder(s_SMID);
//4 是否要求返回状态确认报告:0:不需要;1:需要;2:产生SMC话单(该类型短信仅供网关计费使用,不发送给目的终端)
string s_Registered_Delivery = "";
//byte[] s2 = System.Text.Encoding.Unicode.GetBytes(s_Registered_Delivery);
System.Text.StringBuilder s2 = new System.Text.StringBuilder(s_Registered_Delivery);//5 信息优先级别
string s_Msg_level = "";
//byte[] s3 = System.Text.Encoding.Unicode.GetBytes(s_Msg_level);
System.Text.StringBuilder s3 = new System.Text.StringBuilder(s_Msg_level);//6 业务类型,是数字、字母和符号的组合。
string s_Service_Id = "";
byte[] s4 = System.Text.Encoding.Unicode.GetBytes(s_Service_Id);//7 计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
string s_Fee_UserType = "";
//byte[] s5 = System.Text.Encoding.Unicode.GetBytes(s_Fee_UserType);
System.Text.StringBuilder s5 = new System.Text.StringBuilder(s_Fee_UserType);//8 被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥)
string s_Fee_terminal_Id = "";
byte[] s6 = System.Text.Encoding.Unicode.GetBytes(s_Fee_terminal_Id);//9 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9
string s_Fee_terminal_type = "";
//byte[] s7 = System.Text.Encoding.Unicode.GetBytes(s_Fee_terminal_type);
System.Text.StringBuilder s7 = new System.Text.StringBuilder(s_Fee_terminal_type);//10 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
//发送超长短信应将该值置为1
string s_TP_udhi = "";
//byte[] s8 = System.Text.Encoding.Unicode.GetBytes(s_TP_udhi);
System.Text.StringBuilder s8 = new System.Text.StringBuilder(s_TP_udhi);//11 信息格式,0:ASCII串; 3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字
string s_Msg_Fmt = "";
//byte[] s9 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Fmt);
System.Text.StringBuilder s9 = new System.Text.StringBuilder(s_Msg_Fmt);//12 信息内容来源(SP_Id),sp的企业代码
string s_Msg_src = "";
byte[] s10 = System.Text.Encoding.Unicode.GetBytes(s_Msg_src);//13 资费类别,01:对“计费用户号码”免费;02:对“计费用户号码”按条计信息费;
//03:对“计费用户号码”按包月收取信息费;04:对“计费用户号码”的信息费封顶;
//05:对“计费用户号码”的收费是由SP实现
string s_FeeType = "";
byte[] s11 = System.Text.Encoding.Unicode.GetBytes(s_FeeType);//14 资费代码(以分为单位),如:“0050”代表人民币0.50元
string s_FeeCode = "";
byte[] s12 = System.Text.Encoding.Unicode.GetBytes(s_FeeCode);//15 存活有效期,格式遵循SMPP3.3协议
string s_ValId_Time = "";
byte[] s13 = System.Text.Encoding.Unicode.GetBytes(s_ValId_Time);//16 定时发送时间,格式遵循SMPP3.3协议。这个字段可以让短信在规定的时间内发送给手机用户。
//一般情况下不添,保留为空字符串
string s_At_Time = "";
byte[] s14 = System.Text.Encoding.Unicode.GetBytes(s_At_Time);//17 源号码,SP的服务代码或前缀为服务代码的长号码,
//网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,
//该号码最终在用户手机上显示为短消息的主叫号码
string s_Src_Id = "";
byte[] s15 = System.Text.Encoding.Unicode.GetBytes(s_Src_Id);//18,接收信息的用户数量(小于100个用户)
//通常为1,但长短信这如何添?
string s_DestUsr_tl = "";
//byte[] s16 = System.Text.Encoding.Unicode.GetBytes(s_DestUsr_tl);
System.Text.StringBuilder s16 = new System.Text.StringBuilder(s_DestUsr_tl);//19 接收短信的MSISDN号码,一个类似字符串数组的结构。受DestUsr_tl的约束,决定了本字段的长度。
//21*DestUsr_tl
string s_Dest_terminal_Id = "13912345678";
byte[] s17 = System.Text.Encoding.Unicode.GetBytes(s_Dest_terminal_Id);//20 只有在cmpp3.0里面使用
string s_Dest_terminal_type = "";
//byte[] s18 = System.Text.Encoding.Unicode.GetBytes(s_Dest_terminal_type);
System.Text.StringBuilder s18 = new System.Text.StringBuilder(s_Dest_terminal_type);//21 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)
string s_Msg_Length = "";
//byte[] s19 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Length);
System.Text.StringBuilder s19 = new System.Text.StringBuilder(s_Msg_Length);//22 信息内容,一般情况下存在汉字传输,所以默认的编码/解码应该为Encoding.Default
string s_Msg_Content = "";
//byte[] s20 = System.Text.Encoding.GetEncoding(1252).GetBytes(s_Msg_Content);
byte[] s20 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Content);//23 只有cmpp3.0里面使用
string s_LinkID = "";
//byte[] s21 = System.Text.Encoding.Unicode.GetBytes(s_LinkID);
System.Text.StringBuilder s21 = new System.Text.StringBuilder(s_LinkID);//24 输出参数,返回网关返回的ID
string s_Msg_Id = "";
//byte[] s22 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Id);
System.Text.StringBuilder s22 = new System.Text.StringBuilder(s_Msg_Id);//25 0:不等待网关回应;1,等待网关回应后返回
ulong Result = 0;
//int submit = API_Class.API_SubmitSMS.Cmpp_submitSMS(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,Result); 请问为什么会出现
未将对象引用设置到对象的实例错误....?
达人快进来啊,在线等,急啊,求救//求救,,,,,,
未处理的“System.NullReferenceException”类型的异常出现在 cmppAPI_test.exe 中。其他信息: 未将对象引用设置到对象的实例[部分代码][函数定义]
public class API_SubmitSMS
{
[DllImport("LongSms.dll",EntryPoint="Cmpp_submitSMS",SetLastError=true,CharSet=CharSet.Unicode,ExactSpelling=true,CallingConvention=CallingConvention.Cdecl)]
public static extern int Cmpp_submitSMS
(
StringBuilder SMId,//1
StringBuilder Registered_Delivery ,//2
StringBuilder Msg_level ,//3
byte[] Service_Id ,//4
StringBuilder Fee_UserType ,//5
byte[] Fee_terminal_Id ,//6
StringBuilder Fee_terminal_type,//7
StringBuilder TP_udhi,//8
StringBuilder Msg_Fmt ,//9
byte[] Msg_src ,//10
byte[] FeeType ,//11
byte[] FeeCode ,//12
byte[] ValId_Time ,//13
byte[] At_Time ,//14
byte[] Src_Id ,//15
StringBuilder DestUsr_tl ,//16
byte[] Dest_terminal_Id ,//17
StringBuilder Dest_terminal_type,//18
StringBuilder Msg_Length ,//19
byte[] Msg_Content ,//20
StringBuilder LinkID,//21
StringBuilder Msg_Id,//22
ulong Result//23
);
}[调用]
//1
string s_SMID = "";
//byte[] s1 = System.Text.Encoding.Unicode.GetBytes(s_SMID);
System.Text.StringBuilder s1 = new System.Text.StringBuilder(s_SMID);
//4 是否要求返回状态确认报告:0:不需要;1:需要;2:产生SMC话单(该类型短信仅供网关计费使用,不发送给目的终端)
string s_Registered_Delivery = "";
//byte[] s2 = System.Text.Encoding.Unicode.GetBytes(s_Registered_Delivery);
System.Text.StringBuilder s2 = new System.Text.StringBuilder(s_Registered_Delivery);//5 信息优先级别
string s_Msg_level = "";
//byte[] s3 = System.Text.Encoding.Unicode.GetBytes(s_Msg_level);
System.Text.StringBuilder s3 = new System.Text.StringBuilder(s_Msg_level);//6 业务类型,是数字、字母和符号的组合。
string s_Service_Id = "";
byte[] s4 = System.Text.Encoding.Unicode.GetBytes(s_Service_Id);//7 计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
string s_Fee_UserType = "";
//byte[] s5 = System.Text.Encoding.Unicode.GetBytes(s_Fee_UserType);
System.Text.StringBuilder s5 = new System.Text.StringBuilder(s_Fee_UserType);//8 被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥)
string s_Fee_terminal_Id = "";
byte[] s6 = System.Text.Encoding.Unicode.GetBytes(s_Fee_terminal_Id);//9 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9
string s_Fee_terminal_type = "";
//byte[] s7 = System.Text.Encoding.Unicode.GetBytes(s_Fee_terminal_type);
System.Text.StringBuilder s7 = new System.Text.StringBuilder(s_Fee_terminal_type);//10 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
//发送超长短信应将该值置为1
string s_TP_udhi = "";
//byte[] s8 = System.Text.Encoding.Unicode.GetBytes(s_TP_udhi);
System.Text.StringBuilder s8 = new System.Text.StringBuilder(s_TP_udhi);//11 信息格式,0:ASCII串; 3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字
string s_Msg_Fmt = "";
//byte[] s9 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Fmt);
System.Text.StringBuilder s9 = new System.Text.StringBuilder(s_Msg_Fmt);//12 信息内容来源(SP_Id),sp的企业代码
string s_Msg_src = "";
byte[] s10 = System.Text.Encoding.Unicode.GetBytes(s_Msg_src);//13 资费类别,01:对“计费用户号码”免费;02:对“计费用户号码”按条计信息费;
//03:对“计费用户号码”按包月收取信息费;04:对“计费用户号码”的信息费封顶;
//05:对“计费用户号码”的收费是由SP实现
string s_FeeType = "";
byte[] s11 = System.Text.Encoding.Unicode.GetBytes(s_FeeType);//14 资费代码(以分为单位),如:“0050”代表人民币0.50元
string s_FeeCode = "";
byte[] s12 = System.Text.Encoding.Unicode.GetBytes(s_FeeCode);//15 存活有效期,格式遵循SMPP3.3协议
string s_ValId_Time = "";
byte[] s13 = System.Text.Encoding.Unicode.GetBytes(s_ValId_Time);//16 定时发送时间,格式遵循SMPP3.3协议。这个字段可以让短信在规定的时间内发送给手机用户。
//一般情况下不添,保留为空字符串
string s_At_Time = "";
byte[] s14 = System.Text.Encoding.Unicode.GetBytes(s_At_Time);//17 源号码,SP的服务代码或前缀为服务代码的长号码,
//网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,
//该号码最终在用户手机上显示为短消息的主叫号码
string s_Src_Id = "";
byte[] s15 = System.Text.Encoding.Unicode.GetBytes(s_Src_Id);//18,接收信息的用户数量(小于100个用户)
//通常为1,但长短信这如何添?
string s_DestUsr_tl = "";
//byte[] s16 = System.Text.Encoding.Unicode.GetBytes(s_DestUsr_tl);
System.Text.StringBuilder s16 = new System.Text.StringBuilder(s_DestUsr_tl);//19 接收短信的MSISDN号码,一个类似字符串数组的结构。受DestUsr_tl的约束,决定了本字段的长度。
//21*DestUsr_tl
string s_Dest_terminal_Id = "13912345678";
byte[] s17 = System.Text.Encoding.Unicode.GetBytes(s_Dest_terminal_Id);//20 只有在cmpp3.0里面使用
string s_Dest_terminal_type = "";
//byte[] s18 = System.Text.Encoding.Unicode.GetBytes(s_Dest_terminal_type);
System.Text.StringBuilder s18 = new System.Text.StringBuilder(s_Dest_terminal_type);//21 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)
string s_Msg_Length = "";
//byte[] s19 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Length);
System.Text.StringBuilder s19 = new System.Text.StringBuilder(s_Msg_Length);//22 信息内容,一般情况下存在汉字传输,所以默认的编码/解码应该为Encoding.Default
string s_Msg_Content = "";
//byte[] s20 = System.Text.Encoding.GetEncoding(1252).GetBytes(s_Msg_Content);
byte[] s20 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Content);//23 只有cmpp3.0里面使用
string s_LinkID = "";
//byte[] s21 = System.Text.Encoding.Unicode.GetBytes(s_LinkID);
System.Text.StringBuilder s21 = new System.Text.StringBuilder(s_LinkID);//24 输出参数,返回网关返回的ID
string s_Msg_Id = "";
//byte[] s22 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Id);
System.Text.StringBuilder s22 = new System.Text.StringBuilder(s_Msg_Id);//25 0:不等待网关回应;1,等待网关回应后返回
ulong Result = 0;
//int submit = API_Class.API_SubmitSMS.Cmpp_submitSMS(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,Result); 请问为什么会出现
未将对象引用设置到对象的实例错误....?
达人快进来啊,在线等,急啊,求救//求救,,,,,,
解决方案 »
- winfrom怎么判断是否可以连接inter网,而不是局域网
- 求vs2005 winform 仿QQ窗体特效
- 用C#自己写的记事本程序 如何实现在启动时可以通过命令参数打开文本文件
- dataset与物理表的关联问题,50分放分
- 我想通过编程知道一个ACCESS表中是否有数据,如果没有就insert into 插入数据,如果有就update 修改,如何做到?
- 关于关闭页面的问题
- .net导出Excel,对单元格的操作,急..........
- .net2005连接数据库
- 求vs.net 2003 的序列号
- 谁有自定义控件的源代码?最好是xp风格的!
- 关于控件位置的问题
- 如何在.net平台上的winform中,用c#实现自动点击一个固定网页上的某个按钮?
我现在是用来传入的,用string 么?
我先试试,不行再求教.,,.
string s1 = "1"; //4 是否要求返回状态确认报告:0:不需要;1:需要;2:产生SMC话单(该类型短信仅供网关计费使用,不发送给目的终端)
string s2 = "1"; //5 信息优先级别
string s3 = "3"; //6 业务类型,是数字、字母和符号的组合。
string s_Service_Id = "xx";
byte[] s4 = System.Text.Encoding.Unicode.GetBytes(s_Service_Id); //7 计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
string s5 = "3"; //8 被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥)
string s_Fee_terminal_Id = "0";
byte[] s6 = System.Text.Encoding.Unicode.GetBytes(s_Fee_terminal_Id); //9 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9
string s7 = "0"; //10 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
//发送超长短信应将该值置为1
string s8 = "1"; //11 信息格式,0:ASCII串; 3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字
string s9 = "15"; //12 信息内容来源(SP_Id),sp的企业代码
string s_Msg_src = "11";
byte[] s10 = System.Text.Encoding.Unicode.GetBytes(s_Msg_src); //13 资费类别,01:对“计费用户号码”免费;02:对“计费用户号码”按条计信息费;
//03:对“计费用户号码”按包月收取信息费;04:对“计费用户号码”的信息费封顶;
//05:对“计费用户号码”的收费是由SP实现
string s_FeeType = "03";
byte[] s11 = System.Text.Encoding.Unicode.GetBytes(s_FeeType); //14 资费代码(以分为单位),如:“0050”代表人民币0.50元
string s_FeeCode = "0050";
byte[] s12 = System.Text.Encoding.Unicode.GetBytes(s_FeeCode); //15 存活有效期,格式遵循SMPP3.3协议
string s_ValId_Time = "";
byte[] s13 = System.Text.Encoding.Unicode.GetBytes(s_ValId_Time); //16 定时发送时间,格式遵循SMPP3.3协议。这个字段可以让短信在规定的时间内发送给手机用户。
//一般情况下不添,保留为空字符串
string s_At_Time = "";
byte[] s14 = System.Text.Encoding.Unicode.GetBytes(s_At_Time); //17 源号码,SP的服务代码或前缀为服务代码的长号码,
//网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,
//该号码最终在用户手机上显示为短消息的主叫号码
string s_Src_Id = "22";
byte[] s15 = System.Text.Encoding.Unicode.GetBytes(s_Src_Id); //18,接收信息的用户数量(小于100个用户)
string s16 = "1"; //19 接收短信的MSISDN号码,一个类似字符串数组的结构。受DestUsr_tl的约束,决定了本字段的长度。
//21*DestUsr_tl
string s_Dest_terminal_Id = "13912345678";
byte[] s17 = System.Text.Encoding.Unicode.GetBytes(s_Dest_terminal_Id); //20 只有在cmpp3.0里面使用
string s18 = ""; //21 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)
//怎么添?
string s19 = "140"; //22 信息内容,一般情况下存在汉字传输,所以默认的编码/解码应该为Encoding.Default
string s_Msg_Content = "测试内容";
// byte[] s20 = System.Text.Encoding.GetEncoding(1252).GetBytes(s_Msg_Content);
byte[] s20 = System.Text.Encoding.Unicode.GetBytes(s_Msg_Content); //23 只有cmpp3.0里面使用
string s21 = ""; //24 输出参数,返回网关返回的ID
string s22 = ""; //25 0:不等待网关回应;1,等待网关回应后返回
ulong Result = 0;
未处理的“System.Runtime.InteropServices.SEHException”类型的异常出现在 cmppAPI_test.exe 中。又出现下错误:
其他信息: 外部组件发生异常怎么回事 ,头发蒙了,救命哦...
【功能描述】
向指定的地址发送短信(长短信),内部对内容进行编码处理,用户应按照协议的要求进行相应的处理。
【调用条件】
成功调用Init_connection。
成功调用Login_ismg。
【函数原型】
int Cmpp_submitSMS
(
unsigned char SMId[8],
unsigned char Registered_Delivery ,
unsigned char Msg_level ,
char* Service_Id ,
unsigned char Fee_UserType ,
char* Fee_terminal_Id ,
unsigned char TP_udhi,
unsigned char Msg_Fmt ,
char* Msg_src ,
char* FeeType ,
char* FeeCode ,
char* ValId_Time ,
char* At_Time ,
char* Src_Id ,
unsigned char DestUsr_tl ,
char* Dest_terminal_Id ,
unsigned char Msg_Length ,
char* Msg_Content ,
unsigned char LinkID[20],
unsigned char Msg_Id[8],
unsigned long &Result
);
【参数说明】
各参数和Cmpp_submit基本一致,不过此处对内容的长度不作限制可以超过70个汉字,内部使用Unicode编码,如果是多字节编码内部会转换成Unicode,用户如果传入的就是Unicode,请不要作网络字节顺序的转换,系统内部会作转换。
【返回值】
函数返回值定义参见附录。
【使用说明】
如果该函数执行的不成功,函数的返回值中定义了详细的出错原因,具体可参见返回值部分的定义。
【example】
unsigned long Reuslt = 0; rc = Cmpp_submitSMS
(
SMId,
1 ,
3,
(char*)(LPCTSTR)m_Service_Id ,
m_Fee_UserType ,
(char*)(LPCTSTR)m_Fee_terminal_Id ,
m_Udhi,
m_Msg_Fmt ,
(char*)(LPCTSTR)m_Msg_src ,
(char*)(LPCTSTR)m_FeeType ,
(char*)(LPCTSTR)m_FeeCode ,
(char*)(LPCTSTR)m_ValId_Time ,
(char*)(LPCTSTR)m_At_Time ,
(char*)(LPCTSTR)m_Src_Id ,
m_DestUsr_tl ,
(char*)(LPCTSTR)m_Dest_terminal_Id ,
m_Msg_Length ,
(char*)(LPCTSTR)m_Msg_Content ,
LinkID,
Msg_Id,
Result
);
除了ref result,其他全部用string 么?
其他信息: 外部组件发生异常
int submit = API_Class.API_SubmitSMS.Cmpp_submitSMS("0","1","3","1",
"3","13480812431","0","1",
"15","969766","03","0050",
"","","969766","1",
"13912345678","0","140","你好",
"","",ref Result); public static extern int Cmpp_submitSMS
(
string SMId,//1
string Registered_Delivery ,//2
string Msg_level ,//3
string Service_Id ,//4
string Fee_UserType ,//5
string Fee_terminal_Id ,//6
string Fee_terminal_type,//7
string TP_udhi,//8
string Msg_Fmt ,//9
string Msg_src ,//10
string FeeType ,//11
string FeeCode ,//12
string ValId_Time ,//13
string At_Time ,//14
string Src_Id ,//15
string DestUsr_tl ,//16
string Dest_terminal_Id ,//17
string Dest_terminal_type,//18
string Msg_Length ,//19
string Msg_Content ,//20
string LinkID,//21
string Msg_Id,//22
ref long Result//23
);
3,
问题应该在这里,他用ASCII码你把string Registered_Delivery ,//2
string Msg_level ,//3
改成int,直接输入1,3
//1
string s1 = "0"; //4 是否要求返回状态确认报告:0:不需要;1:需要;2:产生SMC话单(该类型短信仅供网关计费使用,不发送给目的终端)
string s2 = "1"; //5 信息优先级别
string s3 = "3"; //6 业务类型,是数字、字母和符号的组合。
string s4 = "xx"; //7 计费用户类型字段,0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
string s5 = "3"; //8 被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥)
string s6 = "13480812431"; //9 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9
string s7 = ""; //10 GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
//发送超长短信应将该值置为1
string s8 = "1"; //11 信息格式,0:ASCII串; 3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字
string s9 = "15"; //12 信息内容来源(SP_Id),sp的企业代码
string s10 = ""; //13 资费类别,01:对“计费用户号码”免费;02:对“计费用户号码”按条计信息费;
//03:对“计费用户号码”按包月收取信息费;04:对“计费用户号码”的信息费封顶;
//05:对“计费用户号码”的收费是由SP实现
string s11 = "03"; //14 资费代码(以分为单位),如:“0050”代表人民币0.50元
string s12 = "0050"; //15 存活有效期,格式遵循SMPP3.3协议
//如何添?
string s13 = ""; //16 定时发送时间,格式遵循SMPP3.3协议。这个字段可以让短信在规定的时间内发送给手机用户。
//一般情况下不添,保留为空字符串
string s14 = ""; //17 源号码,SP的服务代码或前缀为服务代码的长号码,
//网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,
//该号码最终在用户手机上显示为短消息的主叫号码
string s15 = "969766"; //18,接收信息的用户数量(小于100个用户)
//通常为1,但长短信这如何添?
string s16 = "1"; //19 接收短信的MSISDN号码,一个类似字符串数组的结构。受DestUsr_tl的约束,决定了本字段的长度。
//21*DestUsr_tl
string s17 = "13912345678"; //20 只有在cmpp3.0里面使用
string s18 = ""; //21 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)
//怎么添?
string s19 = ""; //22 信息内容,一般情况下存在汉字传输,所以默认的编码/解码应该为Encoding.Default
string s20 = ""; //23 只有cmpp3.0里面使用
string s21 = ""; //24 输出参数,返回网关返回的ID
//如何添?
string s22 = ""; //25 0:不等待网关回应;1,等待网关回应后返回
long Result = 0;int submit = API_Class.API_SubmitSMS.Cmpp_submitSMS(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,ref Result);
是否用ref result 就可以了
问题应该在unsigned char字段内容不匹配上