Java servlet成功连接到FCM,但Android应用程序未收到任何通知

Java servlet成功连接到FCM,但Android应用程序未收到任何通知,java,android,firebase-cloud-messaging,Java,Android,Firebase Cloud Messaging,我可以使用另一个第三方服务器向我的Android应用程序发送通知,我也可以从firebase控制台发送通知,但是这个servlet(下面的代码)不发送通知,尽管HTTP POST to FCM会成功返回200条消息 我认为servlet不包含创建通知的代码,我不确定在哪里确切创建此代码。我想听听你的意见 @WebServlet("/NPS_Servlet") public class NPS_Servlet extends HttpServlet { private static fin

我可以使用另一个第三方服务器向我的Android应用程序发送通知,我也可以从firebase控制台发送通知,但是这个servlet(下面的代码)不发送通知,尽管HTTP POST to FCM会成功返回200条消息

我认为servlet不包含创建通知的代码,我不确定在哪里确切创建此代码。我想听听你的意见

@WebServlet("/NPS_Servlet")
public class NPS_Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static HashMap<String, Confirmation> TFA = new HashMap<String, Confirmation>();

    /**
     * @see HttpServlet#HttpServlet()
     */
    public NPS_Servlet() {
        super();
        System.out.println("Servlet gestart");
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Servlet#init(ServletConfig)
     */

    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub

    NPS_Servlet Servlet = new NPS_Servlet();
    Servlet.processAuthenticate(null, null);
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

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

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */

    private void processRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        InputStreamReader isr_Json_Request = null;
        isr_Json_Request = new InputStreamReader(request.getInputStream());
        ByteArrayOutputStream baos_Json_Request = new ByteArrayOutputStream();

        int byteRead = 0;
        do {
            byteRead = 0;
            byteRead = isr_Json_Request.read();
            if (byteRead >= 0) {
                baos_Json_Request.write(byteRead);
            }
        } while (byteRead >= 0);
        String s_Json_Request = baos_Json_Request.toString();
        String s_RequestURI = request.getRequestURI();
        String s_ContextPath = request.getContextPath();
        String s_Request_Prefix = s_ContextPath;
        String s_Request = s_RequestURI.substring(s_Request_Prefix.length(), s_RequestURI.length());
        if (! s_Request.startsWith("/")) {
            s_Request = "/" + s_Request;
        }

        System.out.println("Request: " + s_Request);

        String s_Response = "";
        if (s_Request.equals("/TFA_Servlet_Rami_FinalTake/authenticate")) {
            s_Response = handleAuthenticate(s_Json_Request);
        }
        else if (s_Request.equals("/TFA_Servlet_Rami_FinalTake/confirm")) {
            s_Response = handleConfirm(s_Json_Request);
        }
        System.out.println("Response: " + s_Response);
        response.getWriter().print(s_Response);
    }

    private String handleAuthenticate(String s_Json_Request) {
        String s_Json_Response = "";
        Gson _Gson = new Gson();
        Message json_Request = _Gson.fromJson(s_Json_Request,
                Message.class);
        if (json_Request != null) {
            if (json_Request.getFunction().equals("authenticate")) {
                Message json_Response;
                try {
                    json_Response = (Message) json_Request.clone();

                    processAuthenticate(json_Request, json_Response);

                    s_Json_Response = _Gson.toJson(json_Response);
                } catch (CloneNotSupportedException e) {
                    e.printStackTrace();
                }
            }
        }
        if (s_Json_Response.isEmpty()) {
            s_Json_Response = "{ \"result\":1 }";
        }
        return s_Json_Response;
    }

    private void processAuthenticate(Message json_Request, Message json_Response){

        String s_RegistrationId = "AAAA-NCJai&*******9n&&&****f3gRYjH7*******Nh***********PsedxBhKsrFCuF";
        String s_ApiKey = "AIz************EM";
        String uniqueID = UUID.randomUUID().toString();;
        String s_Data = "";

        try {
            s_Data = "{" + 
                                "\"data\": {" +
                                    "\"url\": \"http://" + InetAddress.getLocalHost().getHostAddress() + ":8080/TFA_Servlet/confirm\"," +
                                    "\"id\": \"" + uniqueID + "\"" +
                                "}," +
                                "\"to\": \"" + s_RegistrationId + "\"" +  
                                "}";
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
        }

        try { 

            URL _URL = new URL("https://fcm.googleapis.com/fcm/send");
            HttpURLConnection _HttpURLConnection = (HttpURLConnection) _URL.openConnection();

            _HttpURLConnection.setRequestMethod("POST");
            _HttpURLConnection.setRequestProperty("Content-Type", "application/json");
            _HttpURLConnection.setRequestProperty("Authorization", "key=" + s_RegistrationId);
            _HttpURLConnection.setDoOutput(true);

            DataOutputStream _DataOutputStream = new DataOutputStream(_HttpURLConnection.getOutputStream());

            _DataOutputStream.writeBytes(s_Data);
            _DataOutputStream.flush();
            _DataOutputStream.close();

            int responseCode = _HttpURLConnection.getResponseCode();
            System.out.println("\nSending 'POST' request to URL : " + _URL);
            System.out.println("Response Code : " + responseCode);

            BufferedReader _BufferedReader = new BufferedReader(
                    new InputStreamReader(_HttpURLConnection.getInputStream()));
            String inputLine;
            StringBuffer Response = new StringBuffer();
            while ((inputLine = _BufferedReader.readLine()) != null) {
                Response.append(inputLine);
            }
            _BufferedReader.close();

            if (responseCode == 200) {


            System.out.println("succes");

            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String handleConfirm(String s_Json_Request) {
        String s_Json_Response = "";
        Gson _Gson = new Gson();
        Message json_Request = _Gson.fromJson(s_Json_Request,
                Message.class);
        if (json_Request != null) {
            if (json_Request.getFunction().equals("confirm")) {
                Message json_Response;
                try {
                    json_Response = (Message) json_Request.clone();

                    processConfirm(json_Request, json_Response);

                    s_Json_Response = _Gson.toJson(json_Response);
                } catch (CloneNotSupportedException e) {
                    e.printStackTrace();
                }
            }
        }
        if (s_Json_Response.isEmpty()) {
            s_Json_Response = "{ \"result\":1 }";
        }
        return s_Json_Response;
    }


    private void processConfirm(Message json_Request, Message json_Response) {
        String s_NotificationId = json_Request.getNotificationId();
        String s_Confirmation = json_Request.getConfirmation();

        Confirmation _Confirmation = null;
        synchronized (TFA) {
            _Confirmation = TFA.get(s_NotificationId);
            if (TFA != null) {
                _Confirmation.setReplied(true);
                if (s_Confirmation.equals("approved")) {
                    _Confirmation.setConfirmed(true);
                }
                json_Response.setResult(0);
                TFA.notifyAll();
            }
            else {
                json_Response.setResult(1);
            }
        }
    }
}
***************************响应部分********************************

Sending 'POST' request to URL : https://fcm.googleapis.com/fcm/send
Response Code : 200
succes

那么,你的要求和回应是什么呢?我在最上面的帖子中加了它。发布整个回应。响应代码可能为200,但主体可能指示故障状态和FCM错误。例如,服务器不可用或密钥过期/无效。
Sending 'POST' request to URL : https://fcm.googleapis.com/fcm/send
Response Code : 200
succes