我会使用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