上篇已經提到如何利用序列化產生Xml文件([XML][C#.NET] 處理 ezTRACK 的 EPCIS Xml文件),這篇是說明如何將Xml文件上傳到ezTRACK
先建立起方法模組:
public bool Upload(string FileName) { if (string.IsNullOrEmpty(FileName)) throw new ArgumentNullException("FileName"); if (!File.Exists(FileName)) throw new FileNotFoundException("FileName"); string fileName = FileName; string serverUrl = "ezTRACK網址"; string account = "帳號"; string password = "密碼"; Stream requestStream = null; FileStream fileStream = null; HttpWebRequest uploadRequest = null; HttpWebResponse uploadResponse = null; //忽略驗証 ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; try { //DOTO:1.Create WebRequest //DOTO:2.Creat Request Stream //DOTO:3. Write Request Stream } catch { throw; } finally { if (uploadResponse != null) uploadResponse.Close(); if (fileStream != null) fileStream.Close(); if (requestStream != null) requestStream.Close(); } }
DOTO:1.所要做的是建立WebRequest
uploadRequest = WebRequest.Create(serverUrl) as HttpWebRequest; uploadRequest.Method = "POST"; //uploadRequest.Method = WebRequestMethods.Http.Post; uploadRequest.ContentType = "application/soap+xml; charset=utf-8"; uploadRequest.Credentials = new NetworkCredential(account, password);
DOTO:2.所要做的是建立RequestStream,把硬碟裡的檔案讀進來
requestStream = uploadRequest.GetRequestStream(); fileStream = File.Open(fileName, FileMode.Open); byte[] buffer = new byte[1024]; int bytesRead; while (true) { bytesRead = fileStream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) break; requestStream.Write(buffer, 0, bytesRead); }
requestStream.Close(); uploadResponse = uploadRequest.GetResponse() as HttpWebResponse; if (uploadResponse.StatusCode == HttpStatusCode.OK) return true; else return false;