我有关于使用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();
用户中的已经是编码值。通过操纵这个,我收到一个授权错误,所以已经测试过了。
在这种情况下,有人可以帮助我:)
提前致谢。 添
答案 0 :(得分:0)
所以我自己解决了。
我添加了语句con.setRequestProperty(“Accept”,“application / xml”);它对我很有用。
也许它可以帮助别人。