Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中的odata2服务上进行身份验证?(基本授权)_Java_Odata_Olingo - Fatal编程技术网

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

如何在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

我正试图用java在OData2API=>上为一个项目发出请求。但我不能没有认证。我有个人日志,作为一个用户,我没有任何问题。当我尝试使用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());
但它不起作用。当我打印响应代码时,我有一个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());

    }

}