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!