当前位置:  开发笔记 > Android > 正文

HTTP Post Request:错误400,Firebase主题消息

如何解决《HTTPPostRequest:错误400,Firebase主题消息》经验,为你挑选了1个好方法。

我正在尝试在Android应用程序中实现Firebase主题消息,我​​正在尝试构建一个HTTP post请求,并且我收到的响应代码为400.我已经查看了各种解决方案,但它们似乎都没有救命.

这是我调用AsyncTask的子类的地方:

try{new FirebaseSendMessage().execute("Hello world");}
                catch (Exception e) {
                    Log.d("Exception", e.toString());
                }

这是我的Async Task类的子类.

class FirebaseSendMessage  extends AsyncTask {
private final static String USER_AGENT = "Mozilla/5.0";
private final static String AUTH_KEY = "";

private Exception exception;

protected Double doInBackground(String... params) {
    try {
        sendRequest(params);
    } catch (Exception e) {
        this.exception = e;
    }
    return null;
}

protected void onPostExecute(Long l) {
    // TODO: check this.exception
    // TODO: do something with the feed
}


public void sendRequest(String... params) {
    try {
        String urlString = "https://fcm.googleapis.com/fcm/send";
        URL url = new URL(urlString);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(true);
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/json");
        con.setRequestProperty("Authorization", "key=" + AUTH_KEY);
        String postJsonData = "{\"to\": \"/topics/news\"\"data\": {\"message\": \"This is a Firebase Cloud Messaging Topic Message!\"}";
        con.setDoOutput(true);

        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(postJsonData);
        wr.flush();
        wr.close();

        int responseCode = con.getResponseCode();
        System.out.println("POST Response Code :: " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK){
            System.out.println("succeeded");
        }
        /*InputStream is = con.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        //con.disconnect();*/
    }
    catch(IOException e){
        Log.d("exception thrown: ", e.toString());
    }
}

}

错误: I/System.out: POST Response Code :: 400

如果有其他代码片段可以帮助我调试,请告诉我.提前致谢!



1> AL...:

错误400表示请求中的无效JSON:

检查JSON消息是否格式正确并包含有效字段(例如,确保传入正确的数据类型).

在你的sendRequest,你错过了一个逗号(,之间)"news\",并\"data\"和右括号(}):

String postJsonData = "{\"to\": \"/topics/news\"\"data\": {\"message\": \"This is a Firebase Cloud Messaging Topic Message!\"}";

看起来像这样:

{"to": "/topics/news/""data":{"message":"...."}

应该:

String postJsonData = "{\"to\": \"/topics/news\", \"data\": {\"message\": \"This is a Firebase Cloud Messaging Topic Message!\"}}";

这样JSON结构就是正确的:

{"to": "/topics/news/",
 "data":{"message":"..."}
}

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有