在GCM中将JSon从服务器发送到客户端

时间:2013-09-04 11:50:22

标签: google-app-engine google-cloud-messaging

我正在使用GCM(Google云消息传递)。这就是我想要的东西我想从服务器端发送J Son。在客户端我希望收到那个简单的消息我已经完成但是我被困了怎么可能我将J Son从服务器端传递到客户端。

请帮我解决这个问题。

这是我的服务器端代码

 public class GCMBroadcast extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String SENDER_ID = "";
    private static final String ANDROID_DEVICE = "";
    private List<String> androidTargets = new ArrayList<String>();
    public GCMBroadcast() {

        super();
        androidTargets.add(ANDROID_DEVICE);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String collapseKey = "";
        String userMessage = "";

        try {
            userMessage = request.getParameter("Message");
            collapseKey = request.getParameter("CollapseKey");
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        Sender sender = new Sender(SENDER_ID);
        Message message = new Message.Builder()


        .collapseKey(collapseKey)
        .addData("message", userMessage)
        .build();

        try {

            MulticastResult result = sender.send(message, androidTargets, 1);
            System.out.println("Response: " + result.getResults().toString());
            if (result.getResults() != null) {

                int canonicalRegId = result.getCanonicalIds();
                if (canonicalRegId != 0) {
                    System.out.println("response " +canonicalRegId );
                }
            } else {
                int error = result.getFailure();
                System.out.println("Broadcast failure: " + error);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }


        request.setAttribute("CollapseKey", collapseKey);
        request.setAttribute("Message", userMessage);

        request.getRequestDispatcher("XX.jsp").forward(request, response);

    }

}

1 个答案:

答案 0 :(得分:0)

您的有效负载(通过调用Message添加到addData)只能是名称/值对。如果要发送JSON,可以在此类名称/值对的值中添加JSON字符串。然后你必须在客户端解析JSON你自己。

例如:

.addData("message","{\"some_json_key\":\"some_json_value\"}")