Проблема с URL-адресом полезной нагрузки JSON для Android

#android #json #http-status-code-400

#Android #json #http-status-code-400

Вопрос:

Я использую push-уведомления Urban airship для Android. При этом я хочу использовать широковещательную рассылку для отправки уведомлений всем моим пользователям. При использовании этого я получаю ошибку 400 bad request.

Пожалуйста, скажите мне, что не так в моем коде:

 Authenticator.setDefault(new Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication("sixxxxxxw","YSxxxxxxxxxx:Fxxxxxxxxxxxx".toCharArray());
                       }
                });

           URL url = new URL("https://go.urbanairship.com/api/airmail/send/broadcast/");
           HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
           connection.setRequestMethod("POST");
           connection.setDoOutput(true);
           connection.setDoInput(true);
           connection.setUseCaches(false);


           connection.setRequestProperty("Content-Type","application/json");
           //connection.setRequestProperty("Content-Length", Integer.toString(data.length()));
           JSONObject json = new JSONObject();
           json.put("title","My title");
           json.put("message","My message");



           try {
               output = connection.getOutputStream();
               output.write(json.toString().getBytes());
             } finally {
               if (output != null) { output.close(); }
             }

             int status = ((HttpURLConnection) connection).getResponseCode();
             System.out.println("status is..."   status);
  

Фактически JSON Payload , что я хочу отправить, это:

 {
    "push": {
        "aps": {
            "alert": "New message!"
        }
    },
    "title": "Message title",
    "message": "Your full message here.",
    "extra": {
        "some_key": "some_value"
    }
}
  

или также, если у вас есть sample code for using urban airpship push notifications broadcast api , пожалуйста, поделитесь здесь.

Как отправить это payload в службу с помощью HttpsURLConnection.?

Спасибо

Ответ №1:

Вот как вы «создаете» свою полезную нагрузку JSON:

         JSONObject json = new JSONObject();
        JSONObject push = new JSONObject();
        JSONObject aps = new JSONObject();
        JSONObject extra = new JSONObject();
        aps.put("alert", "New message!");
        push.put("aps", aps);
        json.put("push", push);
        json.put("title","My title");
        json.put("message","My message");
        extra.put("some_key","some_value");
        json.put("extra", extra);
  

Комментарии:

1. Я добавил json.put(«extra», extra); также внизу все та же ошибка

2. Вы уверены, что ваш URL правильный? Это должно заканчиваться чем-то вроде …/boardcast.json

3. мой URL-адрес такой: go.urbanairship.com/api/airmail/send/broadcast когда вы открываете это, оно также показывает аутентификацию..

Ответ №2:

JSON, который вы создаете в своем коде, содержит только заголовок и сообщение. Недостатки

 "push": {
    "aps": {
        "alert": "New message!"
    }
},
  

и

 "extra": {
    "some_key": "some_value"
}
  

не так ли?