带有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 楼答案
所以我自己解决了
我加了一句话。setRequestProperty(“接受”、“应用程序/xml”);这对我很有效
也许它可以帮助其他人