当前位置: 首页 > 知识库问答 >
问题:

Web API Post返回415-不支持的媒体类型

张浩阔
2023-03-14

如何使用C#在SQL Server数据库上执行CRUD操作?

例如,假设有一个带有以下列的DB表雇员

EmployeeID, FirstName, PostalCode

我希望发布一个新员工的信息到该数据库。什么是实现这一目标的有效方法?

我当前的HttpPost

namespace API.Controllers
{
    public class EmployeesController : ApiController
    {
        [HttpPost]
        public void AddEmployee (Employee employee)
        {
            SqlConnection myConnection = new SqlConnection();
            myConnection.ConnectionString = @"Server=.\servername;Database=Northwind;User ID=Username;Password=password;";

            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.CommandType = CommandType.Text;
            sqlCmd.CommandText = "INSERT INTO Employee (EmployeeID,FirstName,PostalCode) Values (@EmployeeID, @FirstName, @Zip)";

            sqlCmd.Parameters.AddWithValue("@EmployeeID", employee.EmployeeID);
            sqlCmd.Parameters.AddWithValue("@FirstName", employee.FirstName);
            sqlCmd.Parameters.AddWithValue("@Zip", employee.Zip);

            myConnection.Open();
            int rowInserted = sqlCmd.ExecuteNonQuery();
            myConnection.Close();
        }
    }
}

下面是员工模型:

namespace API.Models
{
    public class Employee
    {
        public int EmployeeID { get; set; }
        public string FirstName { get; set; }
        public int Zip { get; set; }
    }
}

当我用以下输入测试我的应用编程接口时:

{ "EmployeeID":91, "FirstName":"Vader", "Zip":94221}

我得到这个错误:

HTTP/1.1 415不支持的媒体类型

数据库中没有插入任何内容。

如能提供任何指导,将不胜感激。

WebApiConfig。cs

namespace API
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

根据请求生成的原始错误消息:

HTTP/1.1 415不支持的媒体类型

缓存控制:没有缓存

Pragma:无缓存

内容类型:application/json;字符集=utf-8

过期:-1

服务器:Microsoft IIS/10.0

X-AspNet-Version: 4.0.30319

X-SourceFiles:=?UTF-8?BYZPCDXNLCNCYW1LC2TVxGRVY3VTZW50C1X2AXN1YWGC3R1ZGLVIDIWMTVcUHjVAMVJDHNCQVbJXeFqSvXhCGLCRW1WBG95ZWVzXeFkZEVTCgxVEWVL=

X-Powered-By:ASP。网

日期:2016年7月22日星期五15:33:06 GMT

内容长度:986

{“Message”:“请求包含实体正文,但没有内容类型标头。此资源不支持推断的媒体类型“application/octet stream”。”,

“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“application/octet stream”的内容中读取“Employee”类型的对象。”,

“ExceptionType”:“System.Net.Http.UnsupportedMediaTypeException”,

“StackTrace”:“在System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent内容,类型,IEnumerable1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)\r\n在System.Net.Http.HttpContentExtensions.ReadAsync(HttpContent内容、类型、IEnumerable1格式化程序、IFormatterLogger格式化程序记录器、CancellationToken CancellationToken)\r\n在系统上。网状物Http。模型绑定。FormatterParameterBinding。ReadContentAsync(HttpRequestMessage请求,类型类型,IEnumerable`1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)“}

共有1个答案

谢叶五
2023-03-14

如何传递JSON输入?它需要通过请求主体与与请求类型应用程序/json

您可以将管线指定为

“api/{controller}/{action}/{id}”

然后当调用API url时

http://localhost:63433/api/Employees/AddEmployee

注意控制器不是URL的一部分

在请求正文中把

{“EmployeeID”:91,“FirstName”:“Vader”,“Zip”:94221}

将请求类型设置为Post,请求主体设置为application/json

您可以从客户端工具(如postman see screen)测试api

邮递员

如果你能发布你的客户代码可能是我可以检查它。

 类似资料:
  • 我使用jax-rs和jersey创建了一个REST webservice,它应该在POST请求上使用JSON。我的web服务类如下所示: 我的歌曲课: 我有点用RESTClient,嗯,rest Client...以下是我发送的内容的截图: 当我发送它时,我得到415不受支持的媒体类型错误。有人知道为什么吗?

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 问题内容: 我正在尝试使用jQuery 1.6(Jackson 2.1.1 和Spring 3.2.0 )通过JSON通过该方法向数据库中插入和/或更新数据。 JS代码如下。 通过URL映射的Spring控制器内部的方法如下。 服务器按照问题的含义进行响应, 415不支持的媒体类型 标头信息如下所示。 整个文件如下。 当我删除一个方法参数并仅用于接受请求参数时,它可以工作。 问题答案: 浏览器发送

  • 问题内容: 我正在使用Spring 3.2,并尝试使用ajax发布请求来提交json对象数组。如果相关,我转义了所有特殊字符。 我的HTTP状态为415。 我的控制器是: jQuery是: 我发布的数组中的对象之一的示例是以下json: 错误是: 为什么会发生此错误-有人知道吗? 问题答案: 您可以尝试使用。它没有任何问题