如何使用postasync调用的响应?

时间:2017-09-25 10:54:16

标签: c# json asp.net-web-api httpresponsemessage

我有一个具有PostStudent方法的webApi设置。 API调用工作正常,并在数据库中创建一个新学生,但我不能让它返回响应正文中的值。我已经尝试返回Ok(newStudent)和Created("〜/ api / poststudent",newStudent),但他们都没有返回我需要的newStudent值。

我已经完成了所有响应,无法找到实际的newStudent对象。它在那里,我只是错过它或我的代码有问题吗?

这是API中的PostStudent方法;

var newStudent = new Student
{
  studentId = nextStudentId,
  studentFirstName = studentEntry.StudentFirstName,
  studentLastName = studentEntry.StudentLastName,
  studentDOB = studentEntry.StudentDob,
  studentEmergencyContactName = studentEntry.StudentEmergencyContactName,
  studentEmergencyContactNum = studentEntry.StudentEmergencyContactNum,
  ticketNumber = studentEntry.TicketNumber
};

db.Student.Add(newStudent);

try
{
  db.SaveChanges();
}
catch (DbUpdateException)
{
  if (StudentExists(newStudent.studentId))
    return BadRequest("That student id already exists");
    throw;
}
return Ok(newStudent.studentId);
// return Created("~/api/poststudent", newStudent);     
}

这是我调用postasync并尝试保存响应正文的地方;

var response = client.PostAsync("api/poststudent", content);
return response.Result.Content.ReadAsStringAsync().ToString();

这就是我想要使用该值的地方;

var newStudentId = controller.PostStudent(studentFirstName, studentLastName, studentDob, ticketNumber);
var url = "~/AddGuardian/AddGuardian/" + newStudentId;
Response.Redirect(url);

我希望有人可以帮助我。我从没想过重定向到另一个页面真是太难了!

干杯。

2 个答案:

答案 0 :(得分:1)

正在等待 async来电:

var response = await client.PostAsync("api/poststudent", content);
return (await response.Result.Content.ReadAsStringAsync()).ToString();

答案 1 :(得分:0)

有两个快速启动ASP.NET WebApi项目的官方教程。

我想建议解决这些问题。如果您发现应用程序出错了,请将应用程序修复为这些样本。如果您的要求与样本中的要求不同,您可以在问题中强调这一点。