I am making a post request to the text summarizer endpoint using HttpUrlConnection.
URL url = new URL(apiUrl);
HttpURLConnection client = (HttpURLConnection) url.openConnection();
client.setRequestProperty("content-type", "application/json");
client.setRequestProperty("x-rapidapi-host", "text-analysis12.p.rapidapi.com");
client.setRequestProperty("x-rapidapi-key", "hidden");
client.setRequestMethod("POST");
client.setDoOutput(true);
String jsonBody = "{" +
"\"language\":\"english\"," +
"\"summary_percent\":" + summaryPercent + "," +
"\"text\":" + "\"" + myTestString + "\"" + "}";
//POST to endpoint first
try(OutputStream os = client.getOutputStream()) {
byte[] input = jsonBody.getBytes("utf-8");
os.write(input, 0, input.length);
}
For some reason, when I make the request via RapidApi it works, but when I do it via Java the response is always this:
{3 items
"time_taken":0.0007703304290771484
"msg":“validation error, incorrect data passed to the server”
“ok”:false
}
I have made sure my JSON body passed in is in good format. Any ideas?
아래에 의견을 추가하고 토론에 참여하세요.
We are glad that you were able to solve the issue. Thank you for choosing us.
I have solved it. The way to create the JSON payload is to use Gson library by putting all the request parameters into a map, then using Gson to convert it into proper json. The request now works, thank you.
@gaurmanojkumar530 https://devqa.io/how-to-convert-java-map-to-json/
what parameters are we converting from the map to JSON? is it the headers? or the JSON payload itself?
I am not familiar with Java.
But do you have a way to convert a Dictionary or Key-Value pair to JSON in Java.
This is the way we do it in python.
It is best to use a dedicated library for this purpose.