与GCM通信时返回HTTP代码400

Poshak

我正在尝试为GCM通信实现HTTP服务器。提供正确的密钥后,我得到的HTTP响应代码为'400'。这是代码片段:

URL url = new URL("https://android.googleapis.com/gcm/send");
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.sgp.com", 8080));
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("Authorization", "key="+"AIzaSyAYc53L6kg_XerwoWdLjUAi2iEfNKidSF8");
        conn.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
        wr.writeUTF("{\"collapse_key\" : \"Food-Promo\", \"data\" : {\"Category\" : \"FOOD\",\"Type\": \"VEG\",}, \"registration_ids\": [\"APA91bEk7GPFVxzOidvB3JKCMWq3FHpAaTj2dBv9VGOQkKtLAEiVGR8TDi1fsU4D1k293ODAFTJ8dNfE2gzJNfCvB1sjewZu2fGOIJmY8dgjcNTZQYi4QfyQH-AaO0qEmQnbEeEtsUQ5LzWrIHboAhJMx1bfdsO9bg\"]}");
        wr.flush();
        wr.close();
        int responseCode = conn.getResponseCode();

有人可以帮忙吗?

戒律

仅在以下情况下出现400错误:

仅适用于JSON请求。Indicates that the request could not be parsed as JSON,或包含无效字段(例如,在期望数字的地方传递字符串)。响应中描述了确切的失败原因,并且应在重试该请求之前解决该问题。参考

因此,您可以尝试此代码,它对我有用

为GCM创建标准消息格式的一个POJO类

public class Content implements Serializable {

public List<String> registration_ids;
public Map<String,String> data;

public void addRegId(String regId){
    if(registration_ids == null)
        registration_ids = new LinkedList<String>();
    registration_ids.add(regId);
}

public void createData(String title, String message){
    if(data == null)
        data = new HashMap<String,String>();

    data.put("title", title);
    data.put("message", message);
}

}

请求GCM向Android设备发送通知消息的代码,

   String apiKey = ""; //API key provided by Google Console
   String deviceID="";//Device Id
   Content content = new Content();
   //POJO class as above for standard message format
   content.addRegId(deviceID);       
   content.createData("Title", "Notification Message");
   URL url = new URL("https://android.googleapis.com/gcm/send");
   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
   conn.setRequestMethod("POST");
   conn.setRequestProperty("Content-Type", "application/json");
   conn.setRequestProperty("Authorization", "key="+apiKey);
   conn.setDoOutput(true);
   ObjectMapper mapper = new ObjectMapper();
   DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
   mapper.writeValue(wr, content);
   wr.flush();
   wr.close();
   responseCode = conn.getResponseCode();

希望这可以帮助您解决问题... !!!!!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

HTTP GET请求返回400响应代码

当RequestBody参数的某些属性为null时,如何返回400 HTTP错误代码?

当返回http状态代码400(错误请求)时,.Net HttpWebRequest.GetResponse()引发异常

为什么当 API 返回 400 HTTP 状态代码时 NodeJS 崩溃?

服务器返回的HTTP响应代码:400

Google Map api“路线”返回的HTTP响应代码:400

服务器返回 HTTP 响应代码:openConnection() 后 400

返回响应代码400时@NotNull验证失败

当服务返回 Http 400 时,使用 .map 的 Http Post 不起作用

使用 symfoy HTTP 客户端发出 post 请求时为 URL 返回 HTTP/2 400

URLConnection错误-java.io.IOException:服务器返回的HTTP响应代码:URL的400

NodeJs Express-如何返回HTTP错误代码(400,401,500)和JSON对象

服务器返回URL的HTTP响应代码:400:java.io.IOException

在lambda中返回承诺时如何http状态代码?

约束失败时应返回什么HTTP响应代码?

没有数据时应返回哪个http代码

我从烧瓶中得到“错误400”返回。当调用来自java / eclipse代码时

尝试将文件上传到Amazon S3时返回错误代码400

从iframe发出POST表单时,asp剃刀页面返回400代码

服务器端GCM返回错误400

golang-tcpclient当我发送http请求时,它总是返回(错误请求400)

Spring MVC @ResponseBody方法返回字符串时,如何响应HTTP 400错误?

收到(400)错误的请求。尝试发送GCM消息时

贝宝付款-HTTP响应代码400

Docker Nginx容器:HTTP代码400

Traefik:不要混淆代码> 400的HTTP正文

django-rest在调用http delete时返回http 301状态代码而没有结尾斜杠

服务器返回的HTTP响应代码:400用于URL:https://fcm.googleapis.com/fcm/send

Geopy 返回 HTTP 错误 400:错误请求