GCM中的IllegalArgumentException

时间:2014-10-29 10:31:46

标签: java android google-cloud-messaging

我正在学习Android-GCM概念。我正在尝试一个来自互联网的样本。当我尝试向GCM服务器发送消息时,我收到错误。所以我得到了null异常。我的错误日志放在这里。

这是错误代码

regId: nulljava.lang.IllegalArgumentException: argument cannot be null

    at com.google.android.gcm.server.Sender.nonNull(Sender.java:550)
    at com.google.android.gcm.server.Sender.newBody(Sender.java:500)
    at com.google.android.gcm.server.Sender.sendNoRetry(Sender.java:150)
    at com.google.android.gcm.server.Sender.send(Sender.java:121)
    at com.javapapers.java.gcm.GCMNotification.doPost(GCMNotification.java:66)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)

这是推送到GCM服务器的服务器代码:

我正在使用jsp服务器页面。还可以更改服务器密钥。但我没有得到结果

@WebServlet("/GCMNotification")
public class GCMNotification extends HttpServlet {
    private static final long serialVersionUID = 1L;

    // Put your Google API Server Key here
    private static final String GOOGLE_SERVER_KEY = "******key*******";
    static final String MESSAGE_KEY = "message";    

    public GCMNotification() {
        super();
    }

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

    }

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

        Result result = null;

String share = request.getParameter("regId");

        // GCM RedgId of Android device to send push notification
        String regId = "";
        if (share != null && !share.isEmpty()) {
            regId = request.getParameter("regId");
            PrintWriter writer = new PrintWriter("GCMRegId.txt");
            writer.println(regId);
            writer.close();
            request.setAttribute("pushStatus", "GCM RegId Received.");
            request.getRequestDispatcher("index.jsp")
                    .forward(request, response);
        } else {

            try {
                BufferedReader br = new BufferedReader(new FileReader(
                        "GCMRegId.txt"));
                regId = br.readLine();
                br.close();
                String userMessage = request.getParameter("message");
                Sender sender = new Sender(GOOGLE_SERVER_KEY);
                Message message = new Message.Builder().timeToLive(30)
                        .delayWhileIdle(true).addData(MESSAGE_KEY, userMessage).build();
                System.out.println("regId: " + regId);
                result = sender.send(message, regId, 1);
                request.setAttribute("pushStatus", result.toString());
            } catch (IOException ioe) {
                ioe.printStackTrace();
                request.setAttribute("pushStatus",
                        "RegId required: " + ioe.toString());
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("pushStatus", e.toString());
            }
            request.getRequestDispatcher("index.jsp")
                    .forward(request, response);
        }
    }
}

我尝试了超过这个例外的几个小时。我无法解决它。 有人可以帮忙吗?

提前致谢,

0 个答案:

没有答案