由于客户需要,app添加短信功能,这里用到了第三方对接接口功能:
遇到一个问题,同一个方法本地测试 main方法可以执行
结果成功<?xml version="1.0" encoding="utf-8" ?><returnsms>
<returnstatus>Success/returnstatus>
手机可以收到短信!
,但是在serviceImpl具体方法中调用就总是失败的报文
<?xml version="1.0" encoding="utf-8" ?><returnsms>
<returnstatus>Faild</returnstatus>
<message>短信必须带【】格式签名</message>
<remainpoint>0</remainpoint>
<taskID>0</taskID>
<successCounts>0</successCounts></returnsms>
而且咨询短信平台客服,事实证明我们所测试短信都应该是已经发送成功了!
后台找同事帮忙看 发现是编码的问题:
main---方法 走的是eclipse 我当然设置的是UTF-8的编码,符合平台需求!!
serviceImpl需要tomcat协助,而tomcat默认的编码是:ISO-8859-1
public static String sendMsgNew(String vCode, String phone) {
OutputStream out = null;
BufferedReader rd = null;
String responseContent = "";
HttpURLConnection urlConn = null;
// 短信接口用户名和密码
String userid = "40";
String userName = "ayrjqr";
String password = "123456";
String extno = "060099";
try {
String _url = "http://120.76.25.160:7788/sms.aspx";
String params = "action=send&userid=" + userid + "&account=" + userName + "&password=" + password
+ "&mobile=" + phone + "&content="
+ URLEncoder.encode("【爱睿机器人】您的验证码为:" + vCode + ",1分钟之内有效,请尽快验证!", "UTF-8") + "&sendTime=&extno="
+ extno;
responseContent = SmsUtil.getResponse(_url, params);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (urlConn != null) {
urlConn.disconnect();
}
if (rd != null) {
rd.close();
}
if (out != null) {
out.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
return responseContent;
}