JSON を使用して、アプリケーションを Web サービスに POST します。
まず、アプリケーション データが何らかのタイプのオブジェクトに含まれていると仮定します。JSON.Netを使用して、オブジェクトを JSON にシリアル化します。次のコードのようになります。
var application = new Application();
string serializedApplication = JsonConvert.Serialize(application);
2 つ目は、コードをエンドポイント (webservice、mvc アクション) に POST することです。これには、エンドポイントに対して HTTPRequest を作成する必要があります。次のコードは、コードを POST するために使用するものです。
public bool Post(string url, string body)
{
//Make the post
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
var bytes = Encoding.Default.GetBytes(body);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Stream stream = null;
try
{
request.KeepAlive = false;
request.ContentLength = bytes.Length;
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = -1;
request.Method = "POST";
stream = request.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
}
finally
{
if (stream != null)
{
stream.Flush();
stream.Close();
}
}
bool success = GetResponse(request);
return success;
}
public bool GetResponse(HttpWebRequest request)
{
bool success;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
{
throw new HttpException((int)response.StatusCode, response.StatusDescription);
}
var end = string.Empty;
using (StreamReader reader = new StreamReader(responseStream))
{
end = reader.ReadToEnd();
reader.Close();
success = JsonConvert.DeserializeObject<bool>(end);
}
response.Close();
}
}
return success;
}
これで、JSON をエンドポイントに POST し、応答を受け取ることができるようになりました。次のステップは、エンドポイントを作成することです。次のコードは、アプリケーションを受信して処理する mvc のエンドポイントで開始します。
[HttpPost]
public ActionResult SubmitApplication()
{
//Retrieve the POSTed payload
string body;
using (StreamReader reader = new StreamReader(Request.InputStream))
{
body = reader.ReadToEnd();
reader.Close();
}
var application = JsonConvert.Deserialize<Application>(body);
//Save the application
bool success = SaveApplication(application);
//Send the server a response of success or failure.
return Json(success);
}
上記のコードは良いスタートです。このコードはテストしていないことに注意してください。