我會使用JSON並將應用程序POST到Web服務。
首先,我假設應用程序數據包含在某種類型的對象中。使用JSON.Net將對象序列化爲JSON。它看起來像下面的代碼。
var application = new Application();
string serializedApplication = JsonConvert.Serialize(application);
其次是POST代碼你的端點(webservice,mvc action)。爲此,您需要向端點發出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 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);
}
上述代碼是一個好的開始。請注意,我還沒有測試這個代碼。
非常感謝您的回覆,這是一個很好的開始。我試圖執行代碼。但是,在您的GetResponse方法中,傳入參數(HttpRequest請求)不包含GetResponse方法。那會是HttpWebRequest類嗎?但是如果我在使用(Stream responseStream = response.GetResponseStream())之後將其更改爲HttpWebRequest,那麼if語句將無法完成代碼,System.Net.WebResponse不包含狀態碼的定義。 – 2012-07-20 14:29:03
我已經更新了代碼。 Request.GetResponse需要轉換爲HttpWebResponse。 '使用(HttpWebResponse響應=(HttpWebResponse)request.GetResponse())' – 2012-07-20 17:02:06
非常感謝查克!第一對測試似乎沒有問題。 – 2012-07-20 18:04:59