Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
对Microsoft Graph API的Java请求执行ok,但返回500_Java_Http_Azure Active Directory_Microsoft Graph Api - Fatal编程技术网

对Microsoft Graph API的Java请求执行ok,但返回500

对Microsoft Graph API的Java请求执行ok,但返回500,java,http,azure-active-directory,microsoft-graph-api,Java,Http,Azure Active Directory,Microsoft Graph Api,我有一个带有3种方法的小型Java程序: 一个用于从graph api获取令牌,用于身份验证承载令牌。这是正常的,令牌是正常的,返回200HTTP 另外两个用于在Azure AD中创建用户和分配许可证。 首先,创建用户。令牌正常,用户已创建,平台上的身份验证工作正常(密码设置为ok)。但在响应时,我得到了500 http,即使任务在AzureAD中正确完成。如果在PowerShell中放置相同的请求,则不会出现问题,也不会出现错误。请帮我提个建议。我创建用户的方法是: 您正在忽略服务器返回的

我有一个带有3种方法的小型Java程序:

  • 一个用于从graph api获取令牌,用于身份验证承载令牌。这是正常的,令牌是正常的,返回200HTTP
  • 另外两个用于在Azure AD中创建用户和分配许可证。 首先,创建用户。令牌正常,用户已创建,平台上的身份验证工作正常(密码设置为ok)。但在响应时,我得到了500 http,即使任务在AzureAD中正确完成。如果在PowerShell中放置相同的请求,则不会出现问题,也不会出现错误。请帮我提个建议。我创建用户的方法是:

您正在忽略服务器返回的错误数据,但是,根据文档,它是错误的。建议代码:

        // ...
        System.out.println(status); // 500!!!!! AND THE USER is ok in AzureAD
        
        // always reads server response
        StringBuilder sb = new StringBuilder();
        try (BufferedReader br = 
                new BufferedReader(new InputStreamReader(conn.getInputStream())) {
            String line;
            while ((line = br.readLine()) != null) {
                  sb.append(line + "\n");
            }
        } // <-- br is automatically closed here!

        String output = sb.toString();
        if (status == 200 || status == 201) {
            return output;
        } else {
            // choose a suitable exception, or return null but log error
            throw new FooException("Received error " + status + 
                    " while doing Foo; details follow: " + output);
        }
        // ... 
/。。。
System.out.println(状态);//500!!!!! 并且用户在AzureAD中是正常的
//始终读取服务器响应
StringBuilder sb=新的StringBuilder();
try(BufferedReader br=
新的BufferedReader(新的InputStreamReader(conn.getInputStream())){
弦线;
而((line=br.readLine())!=null){
sb.追加(第+行“\n”);
}

}//感谢您的回复,我检查了错误流并包含:

{
  "error": {
    "code": "InternalServerError",
    "message": "The MIME type 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' requires a '/' character between type and subtype, such as 'text/plain'.",
    "innerError": {
      " 
    }
  }
}
解决办法是:

conn.setRequestProperty("Accept", "application/json");
谢谢大家!

conn.setRequestProperty("Accept", "application/json");