調用接口Post xml和json數據的通用方法


其實調用接口post數據的方法都差不多,區別無非就是格式不一樣,編碼不一樣

過程大致如下:

1.設置HttpWebRequest請求,封裝頭部和編碼格式

2.將提交的內容轉換為byte字節,寫入到請求流里面

3.發送POST數據請求服務器

4.接收服務器返回信息,從返回的響應流里面讀出結果

XML提交方法:輸入的參數需要先轉換為xml格式的字符串

/// <summary>
        /// 接口調用方法,XML格式
        /// </summary>
        /// <param name="url">接口地址</param>
        /// <param name="param">參數xml格式的字符串</param>
        /// <returns></returns>
        public static string WebRequestPost(string url, string param)
        {
            string strResult = "";
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            Stream stream = null;
            StreamReader reader = null;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(new Uri(url));
                request.ServicePoint.Expect100Continue = false;
                request.Method = "POST";
                request.KeepAlive = true;
                request.Timeout = 100 * 1000;
                request.ContentType = "text/xml";

                //把數組轉換成流中所需字節數組類型
                byte[] bytes = Encoding.UTF8.GetBytes(param);
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();//釋放

                //發送POST數據請求服務器
                response = (HttpWebResponse)request.GetResponse();
                Encoding encoding = Encoding.UTF8;
                if (!string.IsNullOrEmpty(response.CharacterSet))
                {
                    encoding = Encoding.GetEncoding(response.CharacterSet);
                }

                //獲取服務器返回信息
                stream = response.GetResponseStream();
                reader = new StreamReader(stream, encoding);
                strResult = reader.ReadToEnd();
            }
            catch (WebException we)
            {
                using (var stream1 = we.Response.GetResponseStream())
                using (var reader1 = new StreamReader(stream1))
                {
                    var data = reader1.ReadToEnd();
                    throw new Exception(data);
                }
            }
            finally
            {
                if (reader != null) reader.Close();
                if (stream != null) stream.Close();
                if (response != null) response.Close();
            }
            return strResult;
        }

JSON提交方法:輸入的參數需要先轉換為json格式字符串

/// <summary>
        /// 接口調用方法,JSON格式
        /// </summary>
        /// <param name="url"></param>
        /// <param name="jsonData">參數是{"key1": value1, "key2": value2}格式的json數據</param>
        /// <returns></returns>
        public static string PostData(string url, string jsonData)
        {
            string result = "";
            HttpWebRequest request = null;
            HttpWebResponse response = null;

            try
            {
                request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.Timeout = 100 * 1000;//設置請求超時時間,單位為毫秒
                request.ContentType = "application/json";
                //request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
                byte[] data = Encoding.UTF8.GetBytes(jsonData);
                request.ContentLength = data.Length;
                using (Stream reqStream = request.GetRequestStream())
                {
                    reqStream.Write(data, 0, data.Length);
                    reqStream.Close();
                }

                response = (HttpWebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();
                //獲取響應內容
                using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
            }
            catch (WebException we)
            {
                using (var stream1 = we.Response.GetResponseStream())
                using (var reader1 = new StreamReader(stream1))
                {
                    var data = reader1.ReadToEnd();
                    throw new Exception(data);
                }
            }
            finally
            {
                if (response != null) response.Close();
            }
            return result;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM