これをRESTエンドポイントと呼ぶ必要があります
PATCH https://graph.windows.net/contoso.onmicrosoft.com/users/[email protected]?api-version=1.5 HTTP/1.1
{
"<extensionPropertyName>": <value>
}
こちらのドキュメントを参照してください: https://msdn.Microsoft.com/en-us/library/Azure/dn720459.aspx
ユーザーの1つのプロパティの値を設定する次のコードがあります。
public async Task<ActionResult> AddExtensionPropertyValueToUser()
{
Uri serviceRoot = new Uri(azureAdGraphApiEndPoint);
var token = await GetAppTokenAsync();
string requestUrl = "https://graph.windows.net/mysaasapp.onmicrosoft.com/users/[email protected]?api-version=1.5";
HttpClient hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, requestUrl)
{
Content = new StringContent("{ \"extension_33e037a7b1aa42ab96936c22d01ca338_Compania\": \"Empresa1\" }", Encoding.UTF8, "application/json")
};
HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl));
if (hrm.IsSuccessStatusCode)
{
string jsonresult = await hrm.Content.ReadAsStringAsync();
return View("TestRestCall", new SuccessViewModel
{
Name = "The Title",
Message = "The message",
JSON = jsonresult.ToJson()
});
}
else
{
return View();
}
}
ただし、204(コンテンツなし)で応答する代わりに、ユーザープロパティ全体で応答するため、残りのCALLに問題があると思います
私はあなたの問題はこの行だと思います:
HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl));
これにより、指定したURLにHTTP GETリクエストが送信されます。この場合、ユーザーは「[email protected]」を参照します。そのため、応答で返されたユーザーのすべてのプロパティが表示されます。
あなたがやりたいのは、あなたが作成したPATCHHttpRequestMessageを送信することだと思います。これを行うには、SendAsyncメソッドを使用し、パラメーターとしてHttpRequestMessageを指定する必要があります。上記の行を次のように変更すると、プロパティ値を設定して、204 NoContent応答が得られると思います。
HttpResponseMessage hrm = await hc.SendAsync(request);