有人的做法是用webClient去做,但是保哥提到透過該方法有以下的缺點:
 無法指定 Timeout,所以當網路連不上時,網頁或程式會整個停在那裡很久!
 不適合用來下載大量的檔案,高負載的網站也不適合這樣用,即便你用非同步的方式撰寫,也會讓WebClient 
對於較正式的場合,還是建議改用 HttpWebRequest 類別處理。
參考源碼如下:
//指定編碼
Encoding myEncoding = Encoding.GetEncoding("big5");
//宣告要post的變數字串
        string param = HttpUtility.UrlEncode("FormID", myEncoding) + "=" + HttpUtility.UrlEncode("ACT011", myEncoding) + "&"   + HttpUtility.UrlEncode("SheetNo", myEncoding) + "="+HttpUtility.UrlEncode("200900010001", myEncoding) + "&" + HttpUtility.UrlEncode("ParserRoleID", myEncoding) + "=" + HttpUtility.UrlEncode("1", myEncoding) + "&" + HttpUtility.UrlEncode("BranchNo", myEncoding) + "=" + HttpUtility.UrlEncode("0010", myEncoding) + "&"+ HttpUtility.UrlEncode("SerialNo", myEncoding) + "=" + HttpUtility.UrlEncode("01", myEncoding) + "&" + HttpUtility.UrlEncode("FlowID", myEncoding) + "=" + HttpUtility.UrlEncode("1", myEncoding) + "&"+ HttpUtility.UrlEncode("UserID", myEncoding) + "=" + HttpUtility.UrlEncode("3726", myEncoding);
 //對post參數進行編碼
        byte[] postBytes = Encoding.ASCII.GetBytes(param);
        //宣告HttpWebRequest物件,並指派URL對像
        HttpWebRequest req = HttpWebRequest)HttpWebRequest.Create("http://localhost/EFSP7/PostTest.aspx");
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded;charset=big5";
        req.ContentLength = postBytes.Length;
        發送Request,並寫入Post參數
        using (Stream reqStream = req.GetRequestStream())
        {
            reqStream.Write(postBytes, 0, postBytes.Length);
        }
        //取得Request的回傳串流
        using (HttpWebResponse wr = req.GetResponse() as HttpWebResponse)
        {
            StreamReader tSR = new StreamReader(wr.GetResponseStream(), System.Text.Encoding.Default);            
            string tResult = tSR.ReadToEnd();
            tSR.Close();
            try
            {
                Response.Write(tResult);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        } 
參考網址:
沒有留言:
張貼留言