C# 如何使用C通过Ajax发布JSON数据#
大家好,我正在尝试将JSON发布到一个API中,我可以使用AJAX和cURL来实现这个API C#.net应用程序中的代码可以处理cURL代码并将其写入SQL:C# 如何使用C通过Ajax发布JSON数据#,c#,.net,json,ajax,post,C#,.net,Json,Ajax,Post,大家好,我正在尝试将JSON发布到一个API中,我可以使用AJAX和cURL来实现这个API C#.net应用程序中的代码可以处理cURL代码并将其写入SQL: curl "http://localhost:38194/API/inbound" --data "FirstName=test4&LastName=test&Email=donot@mail.com" 但是,当我尝试从C#发帖时,我会: 它以request={FirstName=“Tom”,LastName=“buc
curl "http://localhost:38194/API/inbound" --data "FirstName=test4&LastName=test&Email=donot@mail.com"
但是,当我尝试从C#发帖时,我会:
它以request={FirstName=“Tom”,LastName=“buck”,Email=”的形式发送数据sdjsa@kjsdfhs.com“}
我认为我的控制器无法使用以下方法处理此问题:
public string Post([FromBody] FormDataCollection formValues)
我已经搜索了几个小时,怀疑我发送帖子的格式与我的API控制器FormDataCollection
不兼容。我必须承认,我对这些东西没有很好的理解,并通过反复试验学到了更多。可能不太优雅,但这是我使用cURL的API控制器代码
public string Post([FromBody] FormDataCollection formValues)
{
string first_name = null, last_name = null, email = null;
string connStr = ConfigurationManager.ConnectionStrings["inboundapplicant"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connStr))
{
using (SqlCommand command = new SqlCommand())
{
if (!string.IsNullOrWhiteSpace(formValues.Get("FirstName")))
{
first_name = formValues.Get("FirstName");
}
if (!string.IsNullOrWhiteSpace(formValues.Get("LastName")))
{
last_name = formValues.Get("LastName");
}
if (!string.IsNullOrWhiteSpace(formValues.Get("Email")))
{
email = formValues.Get("Email");
}
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "INSERT into [dbo].[Leads] (FirstName, LastName, Email) VALUES (@first_name, @last_name, @email)";
command.Parameters.AddWithValue("@first_name", first_name == null ? (object)DBNull.Value : first_name);
command.Parameters.AddWithValue("@last_name", last_name == null ? (object)DBNull.Value : last_name);
command.Parameters.AddWithValue("@email", email == null ? (object)DBNull.Value : email);
try
{
connection.Open();
int recordsAffected = command.ExecuteNonQuery();
}
catch (SqlException)
{
throw;
}
finally
{
connection.Close();
}
}
}
return "success";
}
因为当您试图以FormData的形式访问json时,您将json作为请求负载传递。无需使用[FromBody]
public string Post(FormDataCollection formValues)
您不应该使用[FormBody]和FormDataCollection。您应该使用Firstname Lastname和Email作为属性创建一个模型 然后,您的方法如下所示:
public string Post(PersonInformation personInformation)
应该给你一些答案。。。
public string Post(PersonInformation personInformation)