我已经看了一个多星期了,我找不到空指针问题在哪里,这完全困扰着我,谷歌老师也不是很有帮助。我在这里找不到真正的问题...和它的驱动坚果!:/
我正在尝试向Firebase发送通知,但它没有超出流编写器的范围,我已经检查了conn不是null或json,但它们看起来都不错。如果我使用 REST客户端,我可以使用正确的 ID 密钥和消息成功发送消息,并且该应用程序会收到该消息。模拟手机具有互联网连接。
运行中引发的错误如下所示:
com.android.okhttp.internal.huc.HttpURLConnectionImpl:https://fcm.googleapis.com/fcm/send.尝试在空对象引用上调用接口方法'void om.android.okhttp.internal.http.HttpStream.writeRequestHeaders(com.android.okhttp.Request)'。
我的代码:
String FCM_URL = "https://fcm.googleapis.com/fcm/send";
URL url = new URL(FCM_URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
//set method as POST or GET
conn.setRequestMethod("POST");
conn.setConnectTimeout(3000);
//pass FCM server key
conn.setRequestProperty("Authorization", "key=" + SERVER_KEY);
//Specify Message Format
conn.setRequestProperty("Content-Type", "application/json");
conn.connect();
//Create JSON Object & pass value
JSONObject infoJson = new JSONObject();
infoJson.put("body", message);
infoJson.put("title", "Test send:");
JSONObject json = new JSONObject();
json.put("to", tokenId);
json.put("collapse_key", "type_a");
json.put("notification", infoJson);
//Add data to json string
JSONObject datacon = new JSONObject();
datacon.put("body","First notification");
datacon.put("title", "Collapsing A");
datacon.put("key_1","Data for key 1");
datacon.put("key_2","Hello, test two");
json.put("data", datacon);
BufferedWriter out =
new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
out.write(json.toString());
out.flush();
out.close();
任何帮助或指示将不胜感激!
似乎有一个错字,set
而不是add
conn.setRequestProperty("Content-Type", "application/json");
之后,能够写
conn.connect();