对Microsoft Graph API的Java请求执行ok,但返回500
我有一个带有3种方法的小型Java程序:对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中放置相同的请求,则不会出现问题,也不会出现错误。请帮我提个建议。我创建用户的方法是: 您正在忽略服务器返回的
- 一个用于从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");