WinCE winform 开发注意事项 环境 client:Microsoft wince5/wince6 .net compact framework3.5
server:iis7.5 Microsoft MVC3编写目的 本篇主要描述wince下的.net winform开发,以及开发注意事项。注意事项 1.HttpWebRequest 在.net compact framework 下不支持 CookieContainer,解决方案通过http header增加cookie来解决 登录session。示例代码如下: var postData = Encoding.UTF8.GetBytes(postString); // 设置提交的相关参数 _request = WebRequest.Create(uri) as HttpWebRequest; _request.Method = "POST";_request.AllowWriteStreamBuffering = false;
_request.KeepAlive = true;
_request.ContentType = "application/x-www-form-urlencoded"; _request.ContentLength = postData.Length; if (!string.IsNullOrEmpty(_cookie))// 登录后每次请求服务端在http header 上带入 session. _request.Headers.Add("Cookie", _cookie);// 提交请求数据
_outputStream = _request.GetRequestStream(); _outputStream.Write(postData, 0, postData.Length); _outputStream.Close();// 接收返回的页面
_response = _request.GetResponse() as HttpWebResponse; _responseStream = _response.GetResponseStream(); _reader = new System.IO.StreamReader(_responseStream, Encoding.UTF8); _srcString = _reader.ReadToEnd(); string statusCode = _response.StatusCode.ToString();string tmpCookie = _response.Headers.Get("Set-Cookie");
string applicationName = AppConfig.GetConfigValue("ApplicationName"); if (tmpCookie.Contains(applicationName))//得到form登录后的 set-cookie _cookie = _response.Headers.Get("Set-Cookie"); _reader.Close(); _response.Close(); return _srcString; 2. 对https请求 https通过ssl一个加密压缩的安全协议。在.net compact framwork 环境下我们默认通过HttpWebRequest是无法获正常获取 https请求的,程序会报Could not establish secure channel for SSL/TLS。.netframework 解决方案不适用于.net compact framework。示例代码如下: 定义相关类: public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy {public TrustAllCertificatePolicy()
{ }
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert, WebRequest req, int problem)
{return true;
}
} 调用: public static string HttpPostMethod(string uri, string postString) { //信任https安全证书 System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();var postData = Encoding.UTF8.GetBytes(postString);
_request = WebRequest.Create(uri) as HttpWebRequest; _request.Method = "POST"; _request.AllowWriteStreamBuffering = false;3.HttpWebRequest 异步请求 在.net compact framework 下我们可以通过HttpWebRequest进行异步请求,比如我们在下载服务器上大文件有一定的帮助。 示例代码如下: private HttpWebRequest m_req; m_req = (HttpWebRequest)HttpWebRequest.Create(string.Format(@"{0}/{1}", domainApp, m_UpgraderFilePath)); //ResponseReceived 为异步委托方法。 m_req.BeginGetResponse(new AsyncCallback(ResponseReceived), null); 4. 其他在.net framework copmact 下读取文本文件、读取.config文件、读取ini文件,均需要自己手动实现。具体代码略。
注:上文中未提及ASP.NET MVC3内容,在本例中MVC3只是作为后台的服务,每个服务端JsonResult方法只是做为http接口。
使用 http 协议而不用 soap(webservice/ wcf) 协议,就微软的技术来讲是个未来的趋势。由于项目开发周期的原因,未将Web API 引入。 在由wince client端使用 .net 大名鼎鼎的开源类库 .Newtonsoft.Json.Compact 将json数据转成相应C#实体。 posted on 2012-05-31 09:44 阅读( ...) 评论( ...)