ASP.NETWebAPIで遊んでいます。作成したメソッドに投稿して、投稿したオブジェクトを返すだけでよいかどうかを確認しています。
アカウントコントローラー:
// 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());
}
読みやすくするために、エラーチェックやボイラープレートコードを削除しました。これは厳密には、実際にPOSTすることを理解するためのスパイクです。私の理解では、GetRequestStream()に書き込む必要があります。すべての読み取りなどは問題なく機能しているようですが、request.GetResponse();からここに戻ることはありません。
私が簡単な取得を行う場合、それはうまく機能します。このようなことを行うためにHTTPClientというクラスを使用できることはわかりましたが、WinForms、Silverlight、およびWindowsPhoneですべて.Net3.5に基づいてこれを機能させる必要があるため、使用できません。
POCOをサーバーにプッシュする手助けは、大きな助けになるでしょう、乾杯!
追加情報:
- 現在、エラーは発生していません。テストアプリがハングします。
- WebAPIプロジェクトをオフにすると、サーバーが見つかりませんという応答が返されます。
- ルートなどは変更していません。
- 同じコントローラーの仕事になります。