Hi,
ich habe mal wieder ein anscheinend Java typisches Problem wo ich nicht weiter komme.
Ich muss folgenden Request an eine API absetzen:
fragt mich bitte nicht welcher kranke Kopf auf die Idee gekommen ist einen JSON string als GET Parameter zu erwarten statt daraus einen ordentlichen POST Request zu machen. Ich kann es nicht ändern.
Mein Code wie ich den Request mache sieht folgendermassen aus:
Das führt nun aber zu einem Bad Request. Ohne den filter parameter läuft es einwandfrei. Schicke ich den Request über Postman funktioniert es auch problemlos.
Ich habe schon versucht die URL vorher zu encode aber das klappt auch nicht. Ich habe auch versucht nur die " durch %22 zu ersetzen. Ebenfalls keine Änderung.
Was kann ich noch tun?
Gruß
Claus
ich habe mal wieder ein anscheinend Java typisches Problem wo ich nicht weiter komme.
Ich muss folgenden Request an eine API absetzen:
Java:
String url = "xxx.com/data/v2/libraryEntries?pageSize=1000&filter={\"lastUpdatedDate\":{\"gte:\""+lastUpdate+"\"}}";
fragt mich bitte nicht welcher kranke Kopf auf die Idee gekommen ist einen JSON string als GET Parameter zu erwarten statt daraus einen ordentlichen POST Request zu machen. Ich kann es nicht ändern.
Mein Code wie ich den Request mache sieht folgendermassen aus:
Java:
try
{
URL obj = new URL("https:" +
"//" + apiURL + params);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
if (con instanceof HttpsURLConnection)
{
if(!quiet) Logger.log("HTTPS Send "+cmd+": https://" + apiURL + params);
((HttpsURLConnection) con)
.setHostnameVerifier(new GEHostNameVerifier());
}
// optional default is GET
con.setRequestMethod(cmd);
con.setRequestProperty("Authorization", token.type + " " + token.token);
con.setRequestProperty("User-Agent", "PostmanRuntime/7.3.0");
con.setRequestProperty("Accept", "*/*");
con.setRequestProperty("Host", apiURL);
con.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
con.setRequestProperty("Connection", "keep-alive");
String responseCode = ""+con.getResponseCode();
if (responseCode.charAt(0) != '2')
{
System.out.println(con.getResponseMessage());
if(!quiet) Logger.log("GET-Request Errorcode: " + responseCode);
return null;
}
return getResponse(con);
}
catch (IOException e)
{
e.printStackTrace();
}
Das führt nun aber zu einem Bad Request. Ohne den filter parameter läuft es einwandfrei. Schicke ich den Request über Postman funktioniert es auch problemlos.
Ich habe schon versucht die URL vorher zu encode aber das klappt auch nicht. Ich habe auch versucht nur die " durch %22 zu ersetzen. Ebenfalls keine Änderung.
Was kann ich noch tun?
Gruß
Claus