Ao fazer executar o POST de Livro, na linha que testa o Status Code, gera a seguinte excessão:
![]( )
Ps.: Ao executar a mesma requisição pelo Postman, funciona normalmente.
Segue os códigos da classe LivroApiClient:
private string EntreAspas(string texto)
{
return $"\"{texto}\"";
}
private HttpContent CreateMultpartFormDataContent(LivroUpload model)
{
MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(new StringContent(model.Titulo), EntreAspas("titulo"));
content.Add(new StringContent(model.Subtitulo), EntreAspas("subtitulo"));
content.Add(new StringContent(model.Resumo), EntreAspas("resumo"));
content.Add(new StringContent(model.Autor), EntreAspas("autor"));
content.Add(new StringContent(model.Lista.ParaString()), EntreAspas("lista"));
if (model.Capa != null)
{
var imageContent = new ByteArrayContent(model.Capa.ConvertToBytes());
imageContent.Headers.Add("content-type", "image/png");
content.Add(
imageContent,
EntreAspas("capa"),
EntreAspas("capa.png")
);
}
return content;
}
public async Task PostLivroAsync(LivroUpload model)
{
HttpContent content = CreateMultpartFormDataContent(model);
HttpResponseMessage resposta = await _httpClient.PostAsync($"livros", content);
resposta.EnsureSuccessStatusCode();
}
Segue também a chamada da API na classe LivroController:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Novo(LivroUpload model)
{
if (ModelState.IsValid)
{
await _api.PostLivroAsync(model);
return RedirectToAction("Index", "Home");
}
return View(model);
}