webrequest 和 httpclient 请求方式 (Http请求方式)

        /// <summary>
        /// webreques 请求方式
        /// </summary>
        /// <param name="Url"></param>
        /// <param name="XmlParams"></param>
        /// <returns></returns>
        public string RequestService(string Url, string XmlParams)
        {
            Encoding encoding = Encoding.UTF8;
            string responseData = String.Empty;

            WebRequest request = HttpWebRequest.Create(Url);
            byte[] bs = System.Text.ASCIIEncoding.ASCII.GetBytes(XmlParams);

            request.Method = "POST";
            request.ContentType = "text/xml;charset=UTF-8";
            request.ContentLength = bs.Length;

            //指定要调用http://localhost:32100/Service1.svc服务中的GetDataUsingDataContract方法
            //http://tempuri.org/IService1/GetDataUsingDataContract(名称空间(http://tempuri.org/)/接口名称(IService1)/方法名(GetDataUsingDataContract))
            //request.Headers["SOAPAction"] = "http://tempuri.org/IService1/GetDataUsingDataContract";
            try
            {
                using (Stream reqStream = request.GetRequestStream())
                {
                    reqStream.Write(bs, 0, bs.Length);
                    reqStream.Close();
                }
            }
            catch (Exception ex)
            {
                //调试异常 使用
                return ex.Message;
            }



            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                {
                    responseData = reader.ReadToEnd().ToString();
                }
            }

            return responseData;
        }

        public static string PostAsync(string Url, string Xml, IDictionary<string, string> headers = null)
        {
            HttpClient client = new HttpClient() { Timeout = new TimeSpan(0, 2, 0) };
            using (HttpContent content = new StringContent(Xml))
            {
                content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
                if (headers != null)
                {
                    foreach (var item in headers)
                    {
                        content.Headers.Add(item.Key, item.Value);
                    }
                }
                var task = client.PostAsync(Url, content);
                var rsp = task.Result;
                rsp.EnsureSuccessStatusCode();                                             //     将引发异常。
                var tasktext = rsp.Content.ReadAsStringAsync();
                return tasktext.Result;
            }
        }

httpclient 是在web4.5版本之后出现的  模拟Java的httpclient发送请求

异步

   public static async Task<string> PostAsync(HttpClient client, string url, object data, IDictionary<string, string> headers = null)
        {
            var dataString = DataSerializer.SerizlizeToJSON(data);
            using (HttpContent content = new StringContent(dataString))
            {
                content.Headers.ContentType = new MediaTypeHeaderValue(CONTENT_TYPE_JSON); 
                if (headers != null)
                {
                    foreach (var item in headers) 
                    {
                        content.Headers.Add(item.Key, item.Value);
                    }
                }
                var rsp = await client.PostAsync(url, content); 
                rsp.EnsureSuccessStatusCode();                                             //     将引发异常。
                var text = await rsp.Content.ReadAsStringAsync(); 
                return text;
            }
        }
原文地址:https://www.cnblogs.com/scyr/p/6835258.html