Ich habe ein Problem in Bezug auf OData Abfrage mit einem Java-Client.OData Bad Request 400 mit Java-Client
Wenn ich Postman benutze, funktioniert alles wie erwartet und ich erhalte eine Antwort vom Webservice mit den Metadaten. Aber in meinem Java-Client, der nicht auf dem SCP/HCP läuft, erhalte ich "400-Bad Request". Ich habe die originale Olingo-Bibliothek benutzt.
Ich habe nur den $ metadata Parameter verwendet, also gibt es keinen Filterwert oder etwas anderes.
public void sendGet(String user, String password, String url) throws IOException, URISyntaxException {
// String userpassword = user + ":" + Passwort; // String-Codierung = Base64.encodeBase64String (userPassword.getBytes ("UTF-8"));
URL obj = new URL(url);
URL urlToEncode = new URL(url);
URI uri = new URI(urlToEncode.getProtocol(), urlToEncode.getUserInfo(), urlToEncode.getHost(), urlToEncode.getPort(), urlToEncode.getPath(), urlToEncode.getQuery(), urlToEncode.getRef());
// open Connection
HttpURLConnection con = (HttpURLConnection) uri.toURL().openConnection();
// Basis Authentifizierung
con.setRequestProperty("Authorization", "Basic " + user);
// optional default is GET
con.setRequestMethod("GET");
// add request header
con.setRequestProperty("Content-Type", "application/xml");
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
response.append("\n");
}
in.close();
// print result
System.out.println(response.toString());
// Schließt eine Vorhandene Verbindung
con.disconnect();
in Benutzer ist bereits der codierte Wert. Indem ich diesen manipuliere, erhalte ich einen Autorisierungsfehler, also bereits getestet.
Kann mir jemand kann in diesem Fall helfen :)
Vielen Dank im Voraus. Tim