[RESOLVIDO] Problemas com POST (Restful) - JavaEE

Bom dia pessoal, tô tentando usar uma API aqui, mas sem sucesso. Eu envio os parametros do request (chatId e body), porém tenho um retorno de que não preenchi o body.

Método de envio usando GSON:

public void sendMessage(String telefone) {
        try {
            Gson g = new Gson();
            Message msg = new Message();
            Type userType = new TypeToken<Message>() {
            }.getType();

            msg.setBody("Test Message");
            msg.setChatId(telefone + "@c.us");

            String json = g.toJson(msg, userType);
            String url = url_principal + "sendMessage?" + token;
            sendPost(url, json, "POST");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Saída:

Enviando 'POST' requisição para a URL: https://eu24.chat-api.com/instance57720/sendMessage?token=xxxxxxxxx
Parâmetros do POST: {"chatId":"5511982743910@c.us","body":"Test Message"}
Resposta: 200
{"sent":false,"message":"Message was not sent: empty body. Please provide message text in body parameter in JSON POST."}

Documentação:

Request body:

{
  "chatId": "5511xxxxxxxx@c.us",
  "body": "teste"
}

E aí @rodriguesabner, tudo bem?!

Creio que o conteúdo deste link possa ajudar!

Abraços!

1 curtida

Como esse método sendPost está realizando a requisição?

1 curtida

Opa, esqueci de mandar o método:

 private void sendPost(String url, String urlParameters, String method) throws Exception {
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        //add reuqest header
        con.setRequestMethod(method);
        con.setRequestProperty("Content-Type", "application/json");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
        con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" + ";charset=UTF-8");

        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(urlParameters);
        wr.flush();
        wr.close();

        int responseCode = con.getResponseCode();
        System.out.println("\nEnviando '" + method + "' requisição para a URL: " + url);
        System.out.println("Parâmetros do " + method + ": " + urlParameters);
        System.out.println("Resposta: " + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        System.out.println(response.toString());
    }

Esqueci de mencionar que o código funciona perfeitamente com minha API local, e com algumas outras APIs, mas com o Pagseguro não funcionou, e esse também não.

Documentação: https://chat-api.com/pt-br/docs.html

Opa Tuna, beleza e você? Cara, Eu dei uma olhada no site, mas o código tá parecido com o meu, tenho até algumas coisas a mais, testei esse do site, mas sem sucesso. Valeu mesmo assim!

1 curtida

Consegui, o problema estava nessa linha:

 con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" + ";charset=UTF-8");

Fui comentando os property’s e consegui identificar que o problema estava nessa desgraça.

Valeu pessoal!!

1 curtida