zoukankan      html  css  js  c++  java
  • HttpWebRequest和HttpWebResponse

    HttpWebRequest

      HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持
      不要使用 HttpWebRequest 构造函数。使用 WebRequest.Create 方法初始化新的 HttpWebRequest 对象

    HttpWebResponse

      决不要直接创建 HttpWebResponse 类的实例。而应当使用通过调用 HttpWebRequest.GetResponse 所返回的实例。您必须调用 Stream.Close 方法或 HttpWebResponse.Close 方法来关闭响应并将连接释放出来供重用。不必同时调用 Stream.Close 和 HttpWebResponse.Close,但这样做不会导致错误

    示例代码

    public string HttpRequest(string url, string xml)
            {
                string msg = string.Empty;
                byte[] bytes = Encoding.UTF8.GetBytes(xml);
    
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.PreAuthenticate = true;
                request.AllowWriteStreamBuffering = true;
                request.SendChunked = true;
                request.ProtocolVersion = HttpVersion.Version11;
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
                request.Method = "POST";
                request.ContentLength = bytes.Length;
                request.ContentType = "text/xml";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes("username:password")));
    
                //身份凭证
                CredentialCache myCredential = new CredentialCache();
                myCredential.Add(new Uri(url), "Basic", new NetworkCredential("username", "password"));
                request.Credentials = myCredential;
    
                //发送数据
                using (Stream requestStream = request.GetRequestStream())
                {
                    requestStream.Write(bytes, 0, bytes.Length);
                }
    
                //返回响应
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    msg = String.Format("POST failed {0}", response.StatusCode);
                }
                else
                {
                    Stream responseStream = response.GetResponseStream();
                    StreamReader sr = new StreamReader(responseStream,Encoding.GetEncoding("gbk"));
                    msg = sr.ReadToEnd();
    
                    sr.Close();
                    response.Close();
                } 
    
                return msg;
            }

    参考文献:郑阿奇主编的《Visual C#网络编程》、MSDN。

  • 相关阅读:
    关于正餐智能POS6.0.1.1改版后,点击反结账进入点菜界面后无法进行加菜的FAQ
    关于正餐智能POS6.0.1.1改版后,订单模块无法进行部分退款的FAQ
    退款证书相关
    简易付主副机和打印机配置
    秒点直连操作文档
    智能POS打印配置&常见问题FAQ 12-14 后期持续更新
    ERP主副机和打印机配置FAQ
    ASP.NET没有魔法——ASP.NET MVC Controller的实例化与执行
    ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
    ASP.NET没有魔法——ASP.NET MVC路由
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/4562286.html
Copyright © 2011-2022 走看看