如何在java中的odata2服务上进行身份验证?(基本授权)
我正试图用java在OData2API=>上为一个项目发出请求。但我不能没有认证。我有个人日志,作为一个用户,我没有任何问题。当我尝试使用java时,它给出了一个错误401 我试试这个:如何在java中的odata2服务上进行身份验证?(基本授权),java,odata,olingo,Java,Odata,Olingo,我正试图用java在OData2API=>上为一个项目发出请求。但我不能没有认证。我有个人日志,作为一个用户,我没有任何问题。当我尝试使用java时,它给出了一个错误401 我试试这个: String auth = user + ":" + password; HttpURLConnection connection = (HttpURLConnection) url.openConnection(); String basicAuth = "Basic " + n
String auth = user + ":" + password;
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
String basicAuth = "Basic " + new String(new Base64().encode(auth.getBytes()));
connection.setRequestProperty("Authorization", basicAuth);
connection.connect();
int responseCode = connection.getResponseCode();
System.out.println(responseCode);
System.out.println(url.toString());
但它不起作用。当我打印响应代码时,我有一个400错误,我还尝试了另一个代码,这是一个401错误
有了邮递员,我只需要基本密码就可以了。
我用的是Olingo2
我是java web的新手,对此一无所知。
在第一步中,我只想进行身份验证。
然后进行查询
谢谢大家! 对于401案例,授权有问题,否则一般方法是正确的 对于400案例,浏览器和工具(如postman)将自动发送额外的标题,代码将丢失这些标题。我重用了about代码,并传递了一个额外的头
Accept:application/xml
,并且能够检索响应。下面是工作代码。干杯
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Test1 {
public static void main(String[] args) throws IOException {
String user = "ENTER YOUR USERNAME";
String password = "ENTER YOUR PASSWORD";
String auth = user + ":" + password;
URL url = new URL("https://scihub.copernicus.eu/dhus/odata/v1/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
String basicAuth = "Basic " + Base64.getEncoder().encodeToString((auth).getBytes(StandardCharsets.UTF_8)); // Java
connection.setRequestProperty("Authorization", basicAuth);
connection.connect();
System.out.println(connection.getResponseCode());
System.out.println(connection.getContent());
}
}