Я пытаюсь получить информацию о пользователях из Azure активного каталога с помощью API Microsoft Graph из кода java, но получаю ошибку 400 (неверный запрос) - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь получить информацию о пользователях из Azure активного каталога, используя Microsoft Graph API из кода java, но получаю 400 ошибок (неверный запрос), но в почтальоне это хорошо работает.

java код, с которым я работаю:

    String url = "https://graph.microsoft.com/v1.0/users?$filter=displayName eq 'Dasari Siri'";
    String token = "Bearer "+accesstoken; 
    URL obj = new URL(url);
    HttpURLConnection con =(HttpURLConnection)obj.openConnection();  
    con.setRequestMethod("GET");
    con.setRequestProperty("Authorization", token);
    con.connect();
    StringBuffer Response = new StringBuffer();
    if(con!=null){
    try {
          BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));        String input ;
           while ((input = br.readLine()) != null){
             Response.append(input);
           }
           br.close();
               }              
           catch (IOException e) {
           e.printStackTrace();
        }catch(Exception e) {
             e.printStackTrace();
          }
}

Ошибка, которую я получаю,

java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.microsoft.com/v1.0/users?$filter=displayName eq 'Dasari Siri'
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at com.javatpoint.Downloadcsv.doDownloadCsv(Downloadcsv.java:80)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

Запрос почтальона, который работал нормально для меня:

Не могли бы вы, пожалуйста, go через это и сообщить мне, где я делаю ошибку

Заранее спасибо

1 Ответ

1 голос
/ 24 апреля 2020

Вам необходимо выполнить кодирование для части фильтра URL-адреса и добавить строку, чтобы задать свойство «Accept» как «application / json»). Пожалуйста, обратитесь к моему коду ниже:

public class Testgraph {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub

        String url = "https://graph.microsoft.com/v1.0/users?" + URLEncoder.encode("$filter=displayName eq 'huryTest'", "UTF-8");
        String token = "Bearer " + "your access token"; 
        URL obj = new URL(url);

        HttpURLConnection con =(HttpURLConnection)obj.openConnection();  
        con.setRequestMethod("GET");
        con.setRequestProperty("Authorization", token);
        con.setRequestProperty("Accept", "application/json");
        con.setRequestProperty("Content-Type", "application/json");
        int responseCode = con.getResponseCode();

        StringBuffer Response = new StringBuffer();
        if(con!=null){
        try {
              BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));        
              String input ;
               while ((input = br.readLine()) != null){
                 Response.append(input);
                 System.out.print("---------success------");
               }
               br.close();
                   }              
               catch (IOException e) {
               e.printStackTrace();
            }catch(Exception e) {
                 e.printStackTrace();
              }
        }
    }

}
...