WinCE winform 開發注意事項


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#實體。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM