我正尝试使用Firebase发送通知...代码正在工作,但7天前,我得到的只是((java.net.protocolexception无法在响应响应后写入请求正文),只要我调用 conn.getOutputStream();
谢谢你们的帮助
URL url = null;
try {
url = new URL("https://fcm.googleapis.com/fcm/send");
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization","key=someKey");
conn.setRequestProperty("Content-Type", "application/json; UTF-8");
JSONObject data= new JSONObject();
JSONObject jsonObject=new JSONObject();
try {
jsonObject.put("to","/topics/all");
data.put("title",title.getText());
data.put("messages",message.getText());
data.put("body",message.getText());
if(spinner.getSelectedItemPosition()==1)data.put("getId",videoListId.getText().toString());
else if(spinner.getSelectedItemPosition()==2)data.put("getId",videoId.getText().toString());
if(spinner.getSelectedItemPosition()==1)data.put("getSubject",videoListSubject.getText().toString());
else if(spinner.getSelectedItemPosition()==2)data.put("getSubject",videoSubject.getText().toString());
if(spinner.getSelectedItemPosition()!=0) data.put("getActivity",spinner.getSelectedItem().toString());
data.put("img_url",downloadUri.toString());
jsonObject.put("data",data);
OutputStreamWriter wr=new OutputStreamWriter(conn.getOutputStream());//exception here
wr.write(String.valueOf(jsonObject));
wr.flush();
conn.getInputStream();
wr.close();
} catch (JSONException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
我使用排球库解决了它,这是我的解决方案...谢谢
void jsonRequest() {
URL url = null;
try {
url = new URL("https://fcm.googleapis.com/fcm/send");
try {
JSONObject data= new JSONObject();
JSONObject jsonObject=new JSONObject();
jsonObject.put("to","someone");
data.put("title",title.getText());
data.put("messages",message.getText());
data.put("body",message.getText());
if(spinner.getSelectedItemPosition()==1)data.put("getId",videoListId.getText().toString());
else if(spinner.getSelectedItemPosition()==2)data.put("getId",videoId.getText().toString());
if(spinner.getSelectedItemPosition()==1)data.put("getSubject",videoListSubject.getText().toString());
else if(spinner.getSelectedItemPosition()==2)data.put("getSubject",videoSubject.getText().toString());
if(spinner.getSelectedItemPosition()!=0) data.put("getActivity",spinner.getSelectedItem().toString());
data.put("img_url",downloadUri.toString());
jsonObject.put("data",data);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("https://fcm.googleapis.com/fcm/send", jsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Toast.makeText(NotificationActivity.this, "worked", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(NotificationActivity.this, "failed", Toast.LENGTH_SHORT).show();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Authorization","key=somekey");
params.put("Content-Type","application/json; UTF-8");
return params;
}
};
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(jsonObjectRequest);
} catch (JSONException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}