如何在.NET C#中的同一URL Rest API中使用POST和GET方法

时间:2019-11-26 13:47:29

标签: c# asp.net rest api

我有一个简单的存储过程,可以获取用户名和密码并选择所有信息并返回。

我在这里有此请求代码:

[AcceptVerbs("GET", "POST")]
    public Student GetInfoByLogin(Student studentm)
    {
        //Response response = new Response();
        Student student = new Student();
        try
        {
            Connection();
            SqlCommand cmd = new SqlCommand("GetInfoByUserNameAndPassword", conn);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@UserName", studentm.UserName);
            cmd.Parameters.AddWithValue("@Password", studentm.Password);

            conn.Open();
            SqlDataReader reader =  cmd.ExecuteReader();

            while (reader.Read())
            {

                student.StundentID = Convert.ToInt32(reader["StudentID"]);
                student.UserName = reader["UserName"].ToString();
                student.Password = reader["Password"].ToString();
                student.PhoneNumber = reader["PhoneNumber"].ToString();
                student.Name = reader["Name"].ToString();
                student.Age = Convert.ToInt32(reader["Age"]);
                student.InstitutionName = reader["InstitutionName"].ToString();
                student.RechargedAmount = Convert.ToInt32(reader["RechargedAmount"]);
                student.IsPending = Convert.ToInt32(reader["IsPending"]);

            }
            conn.Close();
        }
        catch (Exception ex)
        {
            //
        }            
        return student;
    }

我测试了此请求,该请求在Postman中可以正常工作。但是当我点击网址时,没有任何信息。我在想这是ExecuteReader()操作。它应该显示出一些东西!!!有这样的错误日志:

<Message>The request contains an entity body but no Content-Type header. The inferred media type 'application/octet-stream' is not supported for this resource.</Message>

没有MediaTypeFormatter可以从媒体类型为“ application / octet-stream”的内容中读取“ Student”类型的对象。

但是在Postman中它可以正常工作。您能告诉我如何发送POST并使用GET在单个url调用中获取返回的值。

Postman screenshot:

1 个答案:

答案 0 :(得分:0)

听起来您想要执行一个包含两个步骤的一步过程。

您不会先通过HTTP请求POST然后GET,然后进行POST并获得响应。该响应可能是传递给另一个端点的信息,但是所有HTTP请求都获得某种形式的响应,其中可能包含数据。

[AcceptVerbs("POST")]
public Student GetInfoByLogin(Student studentm)
{
   return GetStudentData();
}

错误本身表明您在错误地调用端点 <Message>The request contains an entity body but no Content-Type header. The inferred media type 'application/octet-stream' is not supported for this resource.</Message>

这意味着您的端点本身没有错,是调用方没有处理它。

考虑此SO链接How do you set the Content-Type header for an HttpClient request?

您可能在读或写方面都犯了这个错误,因为您没有指出错误的来源(调用者或处理程序)