w7sss 2017-11-03 06:50 采纳率: 0%
浏览 1688

写了一个简单的servlet测试阿里云短信服务,出现以下异常

exception

javax.servlet.ServletException: Servlet execution threw an exception
com.lemon.sso.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:31)
root cause

java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredElementImpl.getTextContent()Ljava/lang/String;
com.aliyuncs.regions.InternalEndpointsParser.parseEndpoints(InternalEndpointsParser.java:56)
com.aliyuncs.regions.InternalEndpointsParser.getEndpoint(InternalEndpointsParser.java:90)
com.aliyuncs.profile.DefaultProfile.getEndpoints(DefaultProfile.java:148)
com.aliyuncs.profile.DefaultProfile.addEndpoint(DefaultProfile.java:269)
com.aliyuncs.profile.DefaultProfile.addEndpoint(DefaultProfile.java:263)
com.lemon.action.Servlet_Sms.doPost(Servlet_Sms.java:47)
com.lemon.action.Servlet_Sms.doGet(Servlet_Sms.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.lemon.sso.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:31)

public class Servlet_Sms extends HttpServlet {
private static final long serialVersionUID = 1L;

static final String product = "Dysmsapi";
//产品域名,开发者无需替换
static final String domain = "dysmsapi.aliyuncs.com";

// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "xxxxxxxx";
static final String accessKeySecret = "xxxxxxxxxxx";

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String phoneNumbers="13236255894";
    String userName="xxx";

    System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
    System.setProperty("sun.net.client.defaultReadTimeout", "5000");
   IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
    try {
        System.out.println("##################################");
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
    } catch (ClientException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    IAcsClient acsClient = new DefaultAcsClient(profile);

    SendSmsRequest srequest = new SendSmsRequest();
    srequest.setPhoneNumbers(phoneNumbers);
    srequest.setSignName("阿里云短信测试专用"); //短信签名-可在短信控制台中找到
    srequest.setTemplateCode("SMS_10000000"); //短信模板-可在短信控制台中找到
    String code=String.valueOf((int)((Math.random()*9+1)*100000));
    System.out.println(code);
    srequest.setTemplateParam("{\"name\":\""+userName+"\", \"code\":\""+code+"\"}"); //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"

    HandlerResult result=new HandlerResult();
    SendSmsResponse sendSmsResponse;
    try {
        sendSmsResponse = acsClient.getAcsResponse(srequest);
        System.out.println("调用后");
        if(sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())){
            result.setCode(0);
            result.setSuccess(1);
            result.setMessage("发送成功!");
        }else{
            result.setCode(0);
            result.setSuccess(0);
            result.setMessage("发送失败!");
        }
        response.getWriter().print(new Gson().toJson(result));
    } catch (ServerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}


  • 写回答

3条回答 默认 最新

  • airfling 2017-11-03 07:34
    关注

    com.lemon.action.Servlet_Sms.doPost(Servlet_Sms.java:47) 。可以贴出你这部分的代码吗

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料