Post发送xml请求,并接受返回的xml.

        /// <summary>
        /// 发送xml请求
         /// </summary>
        /// <param name="requestUriString">接口url地址</param>
        /// <param name="requestXml">请求的xml</param>
        /// <returns>返回的xml对象</returns>
        private XElement PostRequest(string requestUriString, string requestXml)
        {
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(requestUriString);
            string postData = requestXml;
            byte[] buffer = Encoding.UTF8.GetBytes(postData);
            webRequest.Method = "POST";            // 传递的方法,必须要写,而已Get必须大写。
            webRequest.ContentLength = buffer.Length;
            webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
            webRequest.Headers.Add("Cache-Control", "no-cache");
            webRequest.Accept = "*/*";
            webRequest.Credentials = CredentialCache.DefaultCredentials;
            webRequest.ContentType = "application/x-www-form-urlencoded";
            HttpWebResponse webResponse = null;
            Stream responseStream = null;
            XmlTextReader objXmlReader = null;
            Stream stream = null;
            XElement xml = null;

            try
            {
                stream = webRequest.GetRequestStream();
                stream.Write(buffer, 0, buffer.Length);

                try
                {
                    webResponse = (HttpWebResponse)webRequest.GetResponse();
                }
                catch
                {
                    return null;
                }

                if (HttpStatusCode.OK == webResponse.StatusCode)
                {
                    // 得到回应过来的流                
                    // HttpStatusCode.OK,指示请求成功,且请求的信息包含在响应中
                    responseStream = webResponse.GetResponseStream();
                    objXmlReader = new XmlTextReader(responseStream); // Load response stream into XMLReader

                    xml = XElement.Load(objXmlReader);
                }
                else
                {
                    AppException app = new AppException("请求失败,状态" + webResponse.StatusCode.ToString() + ", " + webResponse.StatusDescription);
                    throw app;
                }
            }
            finally
            {
                if (null != webResponse)
                {
                    webResponse.Close();  // 响应关闭,要不会占用网络资源
                }

                if (null != objXmlReader)
                {
                    objXmlReader.Close();
                }

                if (null != responseStream)
                {
                    responseStream.Close();
                }

                stream.Close();
            }

            return xml;
        }

posted on 2014-03-24 17:57  ljs0109  阅读(683)  评论(0)    收藏  举报

导航