电信smgp3.0发短信出现乱码

S1351026 2012-05-14 06:43:49
各位大侠,最近在做电信smgp协议下发短信功能,电信只提供了sp号,网上找了个smgp开发包和文档http://download.csdn.net/detail/s1351026/4301478里面有测试用例,当我在该开发包中测试(开发包编码为gbk)发送的短信能正常在手机上显示,将开发包改为utf-8发出的是乱码,因为我们系统是统一UTF-8,将开发包打成jar放入系统中跑在tomcat发送短信也是乱码,主要代码为一下:
SMGP3 smgp = new SMGP3();
int socketID=smgp.SMGP_Connect("124.126.119.17",8890, "test",
"test",(byte)0);// 连接正常
if (socketID > 0) {
int test_ret = smgp.SMGPActiveTest(socketID);
if (test_ret == 0) {
TSMGP_SUBMIT submit = new TSMGP_SUBMIT();
submit.cMsgType = 6;
submit.cNeedReport = 1;
submit.cPriority = 0;
submit.sServiceID = "PC2P";
submit.sFeeType = "00";
submit.sFeeCode = "0";
submit.sFixedFee = "0";
submit.sValidTime = "";
submit.sAtTime = "";
submit.sSrcTermID = "106590290015";
submit.sChargeTermID = "106590290015";
submit.sDestTermID = "15332319099"
submit.ucMsgFormat = 15; // 设置消息体编码格式 8:ucs2,15为gbk18030 submit.sMsgContent =content;// sxit测试短信5555566";
submit.sReserve = "";

TSMGP_TLV tlv = new TSMGP_TLV();
tlv.b_cDestMaskFlag = true;
tlv.cDestMaskFlag = 1;
tlv.b_cFeeFlag = true;
tlv.cFeeFlag = 1;
tlv.b_cFeeMaskFlag = true;
tlv.cFeeMaskFlag = 1;
tlv.b_cMServiceID = true;
tlv.cMServiceID = 1;
tlv.b_cMsgType = true;
tlv.cMsgType = 1;
tlv.b_cNodesCount = true;
tlv.cNodesCount = 1;
tlv.b_cPid = true;
tlv.cPid = 1;
tlv.b_cPkNumber = true;
tlv.cPkNumber = 1;
tlv.b_cPkTotal = true;
tlv.cPkTotal = 1;
tlv.b_cSpDealResult = true;
tlv.cSpDealResult = 1;
tlv.b_cSpMaskFlag = true;
tlv.cSpMaskFlag = 1;
tlv.b_cSrcMaskFlag = true;
tlv.cSrcMaskFlag = 1;
tlv.b_cUdhi = true;
tlv.cUdhi = 1;
tlv.b_strDestNumberMask = true;
tlv.strDestNumberMask = "123";
tlv.b_strMsgSrc = true;
tlv.strMsgSrc = "测试TLV";
tlv.b_strFeeNumberMask = true;
tlv.strFeeNumberMask = "232";
tlv.b_strLinkId = true;
tlv.strLinkId = "";
tlv.b_strSrcNumberMask = true;
tlv.strSrcNumberMask = "4333435";

// submit.tsmgpTlv=tlv;

TSMGP_RESP resp = new TSMGP_RESP();
int submit_ret = smgp.SMGP_Submit(socketID, submit, resp);

请大家帮忙找茬,灰常紧急,小弟拜谢,雪地在线跪等!!!
...全文
1217 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingfeihana 2013-08-09
  • 打赏
  • 举报
回复
我试了一下总是返回:读取connectresp消息时阻塞,返回,返回值是-78,说是网关超时应答,不知道是什么原因,LZ能帮忙解释一下么
java陈 2013-08-08
  • 打赏
  • 举报
回复
问题是这样的: 我使用的是电信的接口 最近公司开发了一个短信平台系统: 使用的是电信接口发彩信安卓手机接收正常,苹果的就乱序 我使用的是电信的制作规范代发彩信,每一帧的文字内容放在一个TXT文件中, 每一帧的图片保存为一个JPG文件。文件名为帧号的数字, 比如:第一帧的图片的文件名为1.jpg,第一帧的文字的文件名为1.text,以此类推
java陈 2013-08-08
  • 打赏
  • 举报
回复
我也顶一下 我也遇到了一个很悲剧的问题,你如果有遇到过。我们私聊一下。在下感谢万分。
bingfeihana 2013-08-07
  • 打赏
  • 举报
回复
先顶一个,研究一下
S1351026 2013-03-01
  • 打赏
  • 举报
回复
嗯,不好意思,时间比较久有点遗忘了,我是改 TSMGP_SUBMIT submit=new TSMGP_SUBMIT(); submit.getRequestBody(); 这个方法里转换一下字符就行! 不过这得看你工程的编码格式,最好保持一致
liangqianlong 2013-02-18
  • 打赏
  • 举报
回复
大侠能否将在UTF-8环境中乱码的解决方法描述下啊
tylz1985 2012-10-31
  • 打赏
  • 举报
回复
我仔细跟接口文档对比过,但还是出现上述描述的问题,可以qq交流下吗?我的qq号是:271910941,事情挺着急,望不吝指教。

S1351026 2012-09-27
  • 打赏
  • 举报
回复
我这边的已经可以发送成功了,这个错误你参考一下电信的接口开发文档,注意的是事业代码是否正常可用以及发送到的手机号有没有限制,因为我的之前只能发送到电信号上,小心体的编码问题需要注意一下,基本源码没什么大问题
tylz1985 2012-09-21
  • 打赏
  • 举报
回复
不知道楼上的两位做电信smgp协议下发短信功能是否完成,我有问题想请教,望不吝指教。

下面是我用楼主的例子程序运行后的日志,总是提示:读取connectresp消息时阻塞,返回, 连接ISMG返回值:-78

请问一下,这是什么原因? 我的qq号是:271910941,希望指教下哈




[INFO ] 2012-09-21 09:56:00,415--> MT-TEST Start
[INFO ] 2012-09-21 09:56:00,415-->连接主机:117.35.57.49端口:5018
[INFO ] 2012-09-21 09:56:00,446-->成功建立起和网关的socket连接
[DEBUG] 2012-09-21 09:56:00,446-->FinalDef.CMD_SMGP_LOGIN==1
[DEBUG] 2012-09-21 09:56:00,446-->this.lCommand_ID==1
[INFO ] 2012-09-21 09:56:00,461-->com.sxit.smgp3.TSMGP_LOGIN 消息处理,序列号=1
[DEBUG] 2012-09-21 09:56:00,461-->企业代码:63100613,密码:123456,SP:36 33 31 30 30 36 31 33
[DEBUG] 2012-09-21 09:56:00,461-->md5散列码:1F 3C F7 60 9F C0 CA 9C 77 8E 89 6C DA AA BC 49
[DEBUG] 2012-09-21 09:56:00,461-->lTotal_Length==42
[DEBUG] 2012-09-21 09:56:00,461-->lCommand_ID==1
[DEBUG] 2012-09-21 09:56:00,461-->lSerial_ID==1
[INFO ] 2012-09-21 09:56:00,461-->com.sxit.smgp3.TSMGP_LOGIN 发送包体成功
[WARN ] 2012-09-21 09:56:10,471-->读取connectresp消息时阻塞,返回
[INFO ] 2012-09-21 09:56:10,471-->连接ISMG返回值:-78
[INFO ] 2012-09-21 09:56:10,471-->5秒钟都没有发送,发送链路检测包!
[DEBUG] 2012-09-21 09:56:10,471-->this.lCommand_ID==4
[INFO ] 2012-09-21 09:56:10,471-->com.sxit.smgp3.TSMGP_ACTIVE_TEST 消息处理,序列号=2
[DEBUG] 2012-09-21 09:56:10,471-->lTotal_Length==12
[DEBUG] 2012-09-21 09:56:10,471-->lCommand_ID==4
[DEBUG] 2012-09-21 09:56:10,471-->lSerial_ID==2
[ERROR] 2012-09-21 09:56:10,471-->active消息IO错误:java.net.SocketException: Connection reset by peer: socket write error
[INFO ] 2012-09-21 09:56:10,487-->测试链路返回值:-76
[INFO ] 2012-09-21 09:56:15,495-->5秒钟都没有发送,发送链路检测包!
[DEBUG] 2012-09-21 09:56:15,495-->this.lCommand_ID==4
[INFO ] 2012-09-21 09:56:15,495-->com.sxit.smgp3.TSMGP_ACTIVE_TEST 消息处理,序列号=3
jun851218 2012-05-14
  • 打赏
  • 举报
回复
我有一个好办法,QQ聊:46415402

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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