Why does a request to a conversation thread reply fail with a C# HttpClient, but the same call suceeds with curl or Graph Explorer?
David Senk
0
Reputation points
I'm completely lost. I've resorted to just calling curl from C# as this is completely non-sensical to me. I started with using the Graph SDK, which I had multiple issues with, and I also received a "Not Found" error when trying to use graphClient.Groups[groupId].Threads[ThreadId].PostAsync(body) My current code looks like this:
var token = await GetUserTokenAsync(); //gets the latest token from the GraphClient
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
using (var content = new StringContent(body))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var postUrl = new UriBuilder($"https://graph.microsoft.com/v1.0/groups/{groupId}/threads/{threadId}/reply").ToString();
var resp = await client.PostAsync(postUrl, content);
if (!resp.IsSuccessStatusCode)
{
//same Url and body
Console.WriteLine($"Error: Unable to post reply to group {groupId} thread {threadId}. The server said {await resp.Content.ReadAsStringAsync()}");
String curlCommand = $"curl -i -X POST -H \"Authorization: Bearer {token}\" -H \"Content-Type: application/json\" -d '{body}' \"https://graph.microsoft.com/v1.0/groups/{groupId}/threads/{threadId}/reply\"";
Console.WriteLine($"Try this with curl: {curlCommand}");
}
}
}
and when I run the generated curl command... it works? Exact same url, exact same token, exact same content type... but curl works, and HttpClient doesn't? What in the world am I missing?
Sign in to answer