首页 > 解决方案 > 从表单 POST 到外部 API

问题描述

我对 asp.net 很陌生

我正在使用 asp.net MVC 在 VS2019 中构建一个简单的解决方案,它应该将用户数据发送到另一个 API,该 API 将负责保存到数据库中。

到目前为止,这两个 API 都是 REST,我没有使用core

基本上,它是一个带有提交的表单,可以 POST 到外部项目,非常简单。我正在关注一些教程和东西,但是有很多不同的方式让我感到困惑,所以我决定在这里问

这是我到目前为止所拥有的

[HttpPost]
public async ActionResult Index(User user)
{

    HttpClient client = new HttpClient();

    client.BaseAddress = new Uri("https://pathtoAPI.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

    User newuser = new User()
    {
        email = user.email,
        nome = user.nome,
        cpf = user.cpf,
        cnpj = user.cnpj,
        userName = user.userName,
        senha = user.senha,
        telefone = user.telefone
    };            

    var jsonContent = JsonConvert.SerializeObject(newuser);
    var contentString = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    contentString.Headers.ContentType = new
    MediaTypeHeaderValue("application/json");
    //contentString.Headers.Add("Session-Token", session_token); 

    HttpResponseMessage response = await client.PostAsync("register", contentString);
    return Content($"{response}");
}

我想从其他 API 接收“OK”消息并将其打印在我的屏幕上,我正在使用该cshtml文件来处理前面和表单。

虽然返回似乎是错误的,但它期望'null,task,task,或类似的东西。

有人可以帮我处理这段代码吗?

谢谢

标签: c#asp.net-mvc

解决方案


您需要返回响应的内容,而不是响应对象本身。

HttpResponseMessage response = await client.PostAsync("register", contentString);
string responseBody = await response.Content.ReadAsStringAsync();
return Content(responseBody);

推荐阅读