2017-11-20 2 views
0

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

Antwort

0

Also habe ich es selbst gelöst.

Ich habe die Anweisung con.setRequestProperty ("Accept", "application/xml"); und es funktioniert für mich.

Vielleicht könnte es jemand anderem helfen.