有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有Java客户端的OData错误请求400

我有一个关于使用Java客户端进行OData查询的问题

如果我使用Postman,一切都会按预期进行,并且我会收到来自web服务的带有元数据的响应。但是在我的Java客户机中,它不在SCP/HCP上运行,我收到了“400个错误请求”。我用的是原始的奥林戈图书馆

我只使用了$metadata参数,因此没有筛选值或其他内容

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

//字符串userPassword=user+“:”+密码; //字符串编码=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已经是编码值。通过操纵这个,我收到了一个授权错误,已经测试过了

在那种情况下,有人能帮我吗:)

提前谢谢。 提姆


共 (1) 个答案

  1. # 1 楼答案

    所以我自己解决了

    我加了一句话。setRequestProperty(“接受”、“应用程序/xml”);这对我很有效

    也许它可以帮助其他人