How to do a POST in Java by passing it a JSON in the body?

0

I am trying to POST a server from my Java application but the answer I get is a "400" - Bad client Request. Something I'm doing wrong.

I leave my code to see if you can help me:

package web.hpi;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class JavaPostRequest {

    private static HttpURLConnection con;

    public static void main(String[] args) throws MalformedURLException,
        ProtocolException, IOException {

        String url = "http://***.**.20.10:12**0/search";
        String body = "{\r\n\t\\"token\\": \\"1\\",\r\n\t\\"query\\": [{\r\n\t\t\\"index\\": \\"ALTC.MC_ROBERTS\\",\r\n\t\t\\"terms\\": [{\r\n\t\t\t\\"name\\": \\"INDEXTEXT01T\\",\r\n\t\t\t\\"value\\": \\"3044071*\\",\r\n\t\t\t\\"operator\\": \\"like\\"\r\n\t\t}],\r\n\t\t\\"results\\": {\r\n\t\t\t\\"count\\": 5000,\r\n\t\t\t\\"sort\\": [{\r\n\t\t\t\t\\"name\\": \\"ISSUE_DATE\\",\r\n\t\t\t\t\\"order\\": \\"descending\\"\r\n\t\t\t}],\r\n\t\t\t\\"fields\\": []\r\n\t\t}\r\n\t}]\r\n}";
        byte[] postData = body.getBytes(StandardCharsets.UTF_8);

        try {

            URL myurl = new URL(url);
            con = (HttpURLConnection) myurl.openConnection();

            con.setDoOutput(true);
            con.setRequestMethod("POST");
            con.setRequestProperty("User-Agent", "Java client");
            con.setRequestProperty("Content-Type", "application/json");

            try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
                wr.write(postData);
            }

            StringBuilder content;

            try (BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()))) {

                String line;
                content = new StringBuilder();

                while ((line = in.readLine()) != null) {
                    content.append(line);
                    content.append(System.lineSeparator());
                }
            }

            System.out.println(content.toString());

        } finally {

            con.disconnect();
        }
    }
}

I am not using any library, only Java 1.8 standard! Thank you very much everyone!

    
asked by Nacho Zve De La Torre 14.09.2018 в 15:35
source

0 answers