[英]Calling MS WCF REST Service from MVC Client POST BAD Request c#
我希望有人能帮助我。 我有一个WCF REST服务,该服务对于ALL GET功能正常工作。 但是,我无法使POST方法起作用。 我的服务合同是
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "NewEmployeeLeave/")]
string addTimeOff(mmpTimeOff data);
正在调用以下内容
// addTimeOff
// Add a new time off record with passed information
public string addTimeOff(mmpTimeOff data)
{
try
{
// Add the new record to the employees leave requests
mmpTimeOff newTimeOff = data;
db.TimeOffs.Add(new TimeOff
{
StartDate = newTimeOff.StartDate,
EndDate = newTimeOff.EndDate,
PersonId = newTimeOff.PersonId,
Manager = newTimeOff.Manager,
TimeOffType = newTimeOff.TimeOffType,
Status = newTimeOff.Status,
Notes = newTimeOff.Notes
});
db.SaveChanges();
}
// Make sure that we can push the error back to the client.
catch (Exception e)
{
return e.Message;
}
return "ok";
}
客户端代码如下。
client = new HttpClient();
HttpResponseMessage response=new HttpResponseMessage();
mmpPerson user = new mmpPerson();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
mmpTimeOff newLeave = new mmpTimeOff()
{
PersonId = user.Id,
StartDate = DateTime.Parse("2017-10-22"),
EndDate = DateTime.Parse("2017-10-28"),
TimeOffType = "Annual",
Manager = user.Manager,
Status = "Appr"
};
response = await client.PostAsJsonAsync(url + "/newemployeeleave", newLeave);
if (response.IsSuccessStatusCode)
{
ViewBag.Added = "Added New Leave Successfully";
}
当客户端运行时,我得到一个空值被发送到addTimeOff方法。
该类在服务中定义为
public class mmpTimeOff
{
[DataMember]
public int Id { get; set; }
[DataMember]
public System.DateTime StartDate { get; set; }
[DataMember]
public System.DateTime EndDate { get; set; }
[DataMember]
public string TimeOffType { get; set; }
[DataMember]
public int PersonId { get; set; }
[DataMember]
public string Status { get; set; }
[DataMember]
public Nullable<int> Manager { get; set; }
[DataMember]
public string Notes { get; set; }
}
并作为连接服务绑定到客户端。
我如何成功获取对象数据到服务。
感谢所有的帮助。
里克
尤里卡!!!!
谢谢尤金。 阅读您的回复并检查了链接之后,我使用POSTMAN做了进一步的调查,发现PostAsJsonAsync确实在对传递的数据进行json转换,但是由于对象的StartDate和EndDate属性是DateTime对象,因此似乎json转换不喜欢它。
我已经更改了模型以改为传递日期字符串,并且现在可以按预期运行。
里克
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.