0
votes

I have an issue regarding OData querying with an Java Client.

If I use Postman, everything works as expected and I'm receiving a response from the web service with the metadata. But in my Java Client, which runs not on the SCP / HCP I'm receiving "400-Bad Request". I used the original Olingo libary.

I only used the $metadata Parameter, so there is no filter value or something else.

public void sendGet(String user, String password, String url) throws IOException, URISyntaxException {

// String userPassword = user + ":" + password; // String encoding = 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 User is already the encoded value. by manipulating this one, i'm receiving an authorization error, so already tested.

May somebody can help me in that case :)

Thanks in advance. Tim

1

1 Answers

0
votes

So I solved it by myself.

i added the statement con.setRequestProperty("Accept", "application/xml"); and it works fo me.

Maybe it could help somebody else.