使用Java客户端的OData错误请求400

时间:2017-11-20 20:33:33

标签: java odata sap olingo

我有关于使用Java客户端查询OData的问题。

如果我使用Postman,一切都按预期工作,我收到来自Web服务的带有元数据的回复。但是在我的Java客户端中,我没有在SCP / HCP上运行,我收到了“400-Bad Request”。我使用了原来的Olingo图书馆。

我只使用了$ metadata参数,因此没有过滤器值或其他内容。

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();
用户中的

已经是编码值。通过操纵这个,我收到一个授权错误,所以已经测试过了。

在这种情况下,有人可以帮助我:)

提前致谢。 添

1 个答案:

答案 0 :(得分:0)

所以我自己解决了。

我添加了语句con.setRequestProperty(“Accept”,“application / xml”);它对我很有用。

也许它可以帮助别人。