java - 发生 HttpsURLConnection 400 Bad Request 错误
问题描述
我需要将以下 Swift 代码转换为 Java。Swift 代码有效。但是,Java 代码不起作用。
HttpsURLConnection 失败。
responseCode: 400 (HttpsURLConnection.getResponseCode())
message2:错误请求(HttpsURLConnection.getResponseMessage())
如何解决 400 Bad Request 错误。
在斯威夫特(它工作)
func sendNotification(token: String, message: String) {
//Firebase CloudMessaging serverkey
var firebaseServerKey = "AAAAA6qLps4:APA91bE7szGAgp3qYGOJsrSsrM1InhIgf5Fq1xxxxxx"
let url = URL(string: "https://fcm.googleapis.com/fcm/send")!
var request = URLRequest(url: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("key=\(firebaseServerKey)", forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
request.httpBody = "{\"to\":\"\(token)\",\"notification\":{\"body\":\"\(message)\",\"badge\":\"1\"}}".data(using: .utf8)
}
我用JAVA写的(没用)
private void sendNotification(String token, String message) {
//Firebase CloudMessaging serverkey
var firebaseServerKey = "AAAAA6qLps4:APA91bE7szGAgp3qYGOJsrSsrM1InhIgf5Fq1xxxxxx"
try {
URL url = new URL("https://fcm.googleapis.com/fcm/send");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key="+firebaseServerKey);
String str = "{\"to\": " + token + ", \"notification\": { \"body\": " + message + ", \"badge\": \"1\"}}";
byte[] outputInBytes = str.getBytes("UTF-8");
OutputStream os = conn.getOutputStream();
os.write(outputInBytes);
os.close();
int responseCode = conn.getResponseCode(); // responseCode: 400
if (responseCode == HttpsURLConnection.HTTP_OK) {
Log.d("Success", String.valueOf(responseCode));
} else {
String code = String.valueOf(responseCode);
String message2 = conn.getResponseMessage(); // message2: Bad Request
Log.d("Fail", String.valueOf(responseCode));
Log.d("Fail2", conn.getResponseMessage());
}
}
解决方案
您的 JSON 请求正文不正确。它产生{"to": zxc}
无效的json。将其更改为
String str = "{\"to\": \"" + token + "\", \"notification\": { \"body\": \"" +
message + "\", \"badge\": \"1\"}}";
推荐阅读
- java - 从 List 集合中删除一些单词
- gridview - 我可以在 Grid 中实现“ShowsScrollingPlaceholders”吗?
- architecture - 微服务中的上下文分离
- character-encoding - 在 Microsoft Graph API 和 ODATA 上通过电子邮件搜索用户时使用句点/点不返回任何结果
- python - 将字符串列表转换为 Pandas 中的 int 列表
- c# - 模拟后返回 null 的 IHeadersDictionary
- c# - c#如何使匹配卡保持在网格上?(记忆游戏)
- facebook - 连接 facebookads 库以使用 Python 使用 Marketing API 从 Facebook 提取数据的问题
- xml - XSLT:如何对属性中的浮点数列表进行舍入?
- javascript - javascript字符串数组中的顺序差异