[NetWork][C#.NET] 上傳 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;

你可能感兴趣的:(NetWork)