1. 程式人生 > >C# Http POST請求方法

C# Http POST請求方法

        /// <summary>
        /// Name:Panda
        /// POST請求
        /// Date:2016-06-22
        /// </summary>
        /// <param name="Url">介面地址</param>
        /// <param name="Param">介面引數</param>
        /// <param name="ContentType">請求標頭--由於多個介面在同一個程式中,標頭不一致才寫成傳遞形式,如表頭都一致的話,可以寫死</param>
        /// <param name="RecCode">傳送請求時編碼格式--由於多個介面在同一個程式中,傳送請求過去的編碼不同,所以寫成傳遞形式,如果都一致,可寫死</param>
        /// <param name="SendCode">接收返回編碼格式--由於多個介面在同一個程式中,得到的返回結果的編碼不同,所以寫成傳遞形式,如果都一致,可寫死</param>
        /// <returns>返回POST結果</returns>
        private string Post(string Url, string Param, string ContentType, string RecCode, string SendCode) 
        {
            string responseFromServer = "";
            WebRequest request = WebRequest.Create("" + Url + "");//建立一個請求,把介面地址填進來
            request.Method = "POST";//設定請求的方法屬性
            //建立後資料並將其轉換為位元組陣列
            string postData = "" + Param + "";
            byte[] byteArray = null;
            if (RecCode.Equals("UTF8"))
            {
                byteArray = Encoding.UTF8.GetBytes(postData);
            }
            else if (RecCode.Equals("GBK"))
            {
                byteArray = Encoding.UTF8.GetBytes(postData);
            }           
            request.ContentType = "" + ContentType + "";//設定請求標頭
            request.ContentLength = byteArray.Length;//請求長度
            Stream dataStream = request.GetRequestStream();//得到請求流
            dataStream.Write(byteArray, 0, byteArray.Length);//將資料寫入請求流
            dataStream.Close();//關閉流物件

            WebResponse response = request.GetResponse();//得到的響應
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);//顯示狀態
            dataStream = response.GetResponseStream();//獲取伺服器返回的流
            //StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
            StreamReader reader = null;//;new StreamReader(dataStream);//開啟流
            if (SendCode.Equals("UTF8"))
            {
                reader = new StreamReader(dataStream, Encoding.GetEncoding("UTF-8"));//開啟流
            }
            else if (SendCode.Equals("GBK"))
            {
                reader = new StreamReader(dataStream, Encoding.GetEncoding("GBK"));//開啟流
            }
            responseFromServer = reader.ReadToEnd();//讀取內容            
            
            reader.Close();
            dataStream.Close();
            response.Close();
            return responseFromServer;
        }