[C#.NET][TCP Socket] 上傳 EPCIS Xml文件 到 ezTRACK 的 Server
上篇已經提到如何利用序列化產生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);
}
DOTO:3. 當 Request Stream 關閉後就寫入到 Server,利用HttpStatusCode判斷是否上傳成功
requestStream.Close();
uploadResponse = uploadRequest.GetResponse() as HttpWebResponse;
if (uploadResponse.StatusCode == HttpStatusCode.OK)
return true;
else
return false;
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET