zoukankan      html  css  js  c++  java
  • 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;
                }
            }
  • 相关阅读:
    SpringMVC文件上传
    c函数调用过程原理及函数栈帧分析
    《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花
    Java学习笔记——IO操作之以图片地址下载图片
    uva 400 Unix ls 文件输出排版 排序题
    【VC++积累】之八、PreTranslageMessage;TranslageMessage;GetMessage和PeekMessage的区别
    uva 331 Mapping the Swaps 求交换排序的map 纯DFS
    uva 10344 23 out of 5 凑运算结果 全排列+dfs
    Java学习笔记——File类文件管理及IO读写、复制操作
    uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
  • 原文地址:https://www.cnblogs.com/scyr/p/6835258.html
Copyright © 2011-2022 走看看