gpt4 book ai didi

java - 如何在java中的odata2服务上进行身份验证? (基本授权)

转载 作者:行者123 更新时间:2023-12-01 18:12:47 25 4
gpt4 key购买 nike

我正在尝试在此 OData2 API 上使用 java 发出请求 => https://scihub.copernicus.eu/dhus/odata/v1/对于一个项目。但没有身份验证我就不能。我有个人日志,作为用户我没有任何问题。当我尝试使用 java 时,它给出了错误 401。

我试试这个:

     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());

但是这不起作用。当我打印responseCode时,我有一个400错误,我还尝试了另一个代码,它是一个401错误。

使用 PostMan,我只需要 BasicAuth 即可访问,并且可以正常工作。我正在使用 Olingo2。

我是java web新手,我不知道。在第一步中,我只想进行身份验证。然后进行查询。

谢谢!

最佳答案

对于401案例,授权有问题,否则一般做法是正确的。

对于 400 情况,浏览器和 postman 等工具会自动发送额外的 header ,而代码将丢失。我重用了 about 代码并传递了一个附加 header 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());

}

}

关于java - 如何在java中的odata2服务上进行身份验证? (基本授权),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60435300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com