Arquivo json usando o curl não valida na api restful

27/11/2020

0

Estou enviando uma requisição post para uma api restful via curl, e por algum motivo o data (string json) está indo em formato errado. Já coloquei entre aspas simples, aspas duplas, fiz o escapa dentro da string, faço o system.out e sai perfeita, mas a API me devolve uma mensagem assim:

{"code":"240022","code_detail":"Formato inválido para o campo "parameters". Deve-se utilizar um objeto JSON: {"parameter":"value"}","body":null,"request_unique":"4064529","warning":[],"details":null}

Ex. do meu json: {"contact-list_code":"1","contact_code":"1"}
E abaixo meu código

HashMap<String, String> mapaContato = new HashMap<>();
        mapaContato.put("contact-list_code", "1");
        mapaContato.put("contact_code", "1");
        JSONObject json = new JSONObject(mapaContato);
        String token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

        System.out.println(json.toString());
        
        String command = "curl --header "auth-token: " + token + "" --header "Content-Type: application/json; charset=utf-8" --data "" + json.toString() + "" https://api.dinamize.com/emkt/contact/get";

        System.out.println(command);
        try {
            Process process = Runtime.getRuntime().exec(command);
            // retorno            
            Reader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8"));
            StringBuilder sb = new StringBuilder();
            for (int c; (c = in.read()) >= 0;) {
                sb.append((char) c);
            }
            System.out.println("Teste retorno: " + sb.toString());
            JSONObject json2 = new JSONObject(sb.toString());
            System.out.println("Teste leitura: " + json2.toString());
            // resposta
            /*BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            String response=null;
            while ((line = reader.readLine()) != null) {
                response += line;
            }
            System.out.println(response);*/
            process.destroy();
        } catch (IOException ex) {
            Logger.getLogger(ComercialBean.class.getName()).log(Level.SEVERE, null, ex);
        }


Bruno Andrade

Bruno Andrade

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar