我一直在玩 ASP.NET Web API。我想看看我是否可以发布到我构建的方法,该方法只是返回我发布的对象:
在帐户控制器上:
// POST /api/accounts
public Account Post(Account account)
{
return account;
}
用于发布的代码:
public void PostAccount()
{
// http://local_ip/api/accounts
var uri = string.Format("{0}", webServiceRoot);
var acc = new Account();
acc.AccountID = "8";
acc.AccountName = "Mitchel Cars";
acc.AccountNumber = "600123801";
acc.SubscriptionKey = "2535-8254-8568-1192";
acc.ValidUntil = DateTime.Now;
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/xml";
request.ContentLength = 800;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Account));
xmlSerializer.Serialize(request.GetRequestStream(), acc);
var response = (HttpWebResponse)request.GetResponse();
XmlSerializer serializer = new XmlSerializer(typeof(Account));
var newAcc = (Account)serializer.Deserialize(response.GetResponseStream());
}
我删除了任何错误检查或任何样板代码,以使其更易于阅读。这严格来说是一个峰值,只是为了理解实际发布。我的理解是您应该写入 GetRequestStream()。所有的阅读等似乎都可以,但我从来没有从 request.GetResponse(); 回来。
如果我做一个简单的得到它工作正常。我确实看到你可以使用一个名为 HTTPClient 的类来做这些事情,但我不能使用它,因为我需要让它适用于基于 .Net 3.5 的 WinForms、Silverlight 和 Windows Phone
任何将 POCO 推送到服务器的帮助都会有很大帮助,干杯!
附加信息:
- 目前我没有收到任何错误,测试应用程序只是挂起。
- 如果我关闭 WebAPI 项目,我会收到未找到服务器的响应。
- 我没有更改任何路线或任何其他路线。
- 获得相同的控制器工作。