Olá, Pedro! Como vai?
A diferença entre usar new StringContent com PostAsync e usar PostAsJsonAsync está principalmente na conveniência e simplicidade que o PostAsJsonAsync oferece.
Quando você utiliza new StringContent, você precisa manualmente converter seu objeto em uma string JSON e definir o tipo de mídia como application/json. Isso pode ser feito assim:
var jsonContent = JsonSerializer.Serialize(meuObjeto);
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
await httpClient.PostAsync(uri, content);
Por outro lado, o método PostAsJsonAsync simplifica esse processo, pois ele automaticamente serializa o objeto em JSON e define o tipo de mídia corretamente, tudo em uma única chamada:
await httpClient.PostAsJsonAsync(uri, meuObjeto);
O PostAsJsonAsync é uma forma mais direta e menos propensa a erros, especialmente se você está frequentemente enviando dados JSON. No entanto, é sempre bom entender o que está acontecendo por trás das cenas, o que o uso de StringContent pode ajudar a esclarecer.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.