Reputation: 37
I am trying to fetch groups using Azure Graph API Batch. GetMemberGroups is a post request. Sample code:
var groupRequest = graphServiceClient.Users[emailId].GetMemberGroups(false)
.Request()
.Header("Content-Type", "application/json");
groupRequest.Method = Microsoft.Graph.HttpMethods.POST;
var batchRequestContent = new BatchRequestContent();
var groupRequestId = batchRequestContent.AddBatchRequestStep(groupRequest);
var returnedResponse = await graphServiceClient.Batch.Request().PostAsync(batchRequestContent);
This is giving me a BadRequest error. Message: Write request id : xxxxxx-xxxx-xxxx-xxx-xxxxxxx does not contain Content-Type header or body. All other GET request works fine in the Batch. I am also explicitly sending the content type in the request header but still no luck.
Upvotes: 1
Views: 513
Reputation: 20595
The issue is that AddBatchRequestStep(IBaseRequest request)
ignores groupRequest.RequestBody
and creates BatchRequestStep
without body.
You need to use AddBatchRequestStep(HttpRequestMessage httpRequestMessage)
and add content manually to HttpRequestMessage
var groupRequest = graphServiceClient.Users[emailId].GetMemberGroups(false)
.Request();
groupRequest.Method = Microsoft.Graph.HttpMethods.POST;
// create Http request message
var requestMessage = groupRequest.GetHttpRequestMessage();
// add content
requestMessage.Content = new StringContent(JsonSerializer.Serialize(groupRequest.RequestBody), Encoding.UTF8, "application/json");
var batchRequestContent = new BatchRequestContent();
var groupRequestId = batchRequestContent.AddBatchRequestStep(requestMessage);
var returnedResponse = await graphServiceClient.Batch.Request().PostAsync(batchRequestContent);
Upvotes: 0