HttpWebRequest

public static string GetMobileConfByUserId(string userid)
         {
             string rs = null;
             if (!string.IsNullOrEmpty(userid))
             {
                 if (string.IsNullOrEmpty(strOnLine))
                 {
                     strOnLine = ConfigurationManager.AppSettings["OnLineUrl"];
                 }
                 ServicePointManager.DefaultConnectionLimit = 300;
                 System.GC.Collect();
                 CookieContainer cookieContainer = new CookieContainer();
                 // 设置提交的相关参数 
                HttpWebRequest request = null;
                 HttpWebResponse SendSMSResponse = null;
                 Stream dataStream = null;
                 StreamReader SendSMSResponseStream = null;
                 try
                 {
                     request = WebRequest.Create(strOnLine) as HttpWebRequest;
                     request.Method = "POST";
                     request.KeepAlive = false;
                     request.ServicePoint.ConnectionLimit = 300;
                     request.AllowAutoRedirect = true;
                     request.Timeout = 10000;
                     request.ReadWriteTimeout = 10000;
                     request.ContentType = "application/json";
                     request.Accept = "application/xml";
                     request.Headers.Add("X-Auth-Token", HttpUtility.UrlEncode("OpenStack"));
                     string strContent = "{"appId":"","method":"","tokenId":"","data":{"userAccountId":"" + userid + ""}}";             
                     byte[] bytes = Encoding.UTF8.GetBytes(strContent);                                        
                     request.Proxy = null;
                     request.CookieContainer = cookieContainer;
                     using (dataStream = request.GetRequestStream())
                     {
                         dataStream.Write(bytes, 0, bytes.Length);
                     }           
                     SendSMSResponse = (HttpWebResponse)request.GetResponse();
                     if (SendSMSResponse.StatusCode == HttpStatusCode.RequestTimeout)
                     {
                         if (SendSMSResponse != null)
                         {
                             SendSMSResponse.Close();
                             SendSMSResponse = null;
                         }
                         if (request != null)
                         {
                             request.Abort();
                         }
                         return null;
                     }
                     SendSMSResponseStream = new StreamReader(SendSMSResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                     string strRespone = SendSMSResponseStream.ReadToEnd();
                     
                     return strRespone;
                 }
                 catch (Exception ex)
                 {
                    
                     if (dataStream != null)
                     {
                         dataStream.Close();
                         dataStream.Dispose();
                         dataStream = null;
                     }
                     if (SendSMSResponseStream != null)
                     {
                         SendSMSResponseStream.Close();
                         SendSMSResponseStream.Dispose();
                         SendSMSResponseStream = null;
                     }
                     if (SendSMSResponse != null)
                     {
                         SendSMSResponse.Close();
                         SendSMSResponse = null;
                     }
                     if (request != null)
                     {
                         request.Abort();
                     }
                 }
                 finally
                 {
                     if (dataStream != null)
                     {
                         dataStream.Close();
                         dataStream.Dispose();
                         dataStream = null;
                     }
                     if (SendSMSResponseStream != null)
                     {
                         SendSMSResponseStream.Close();
                         SendSMSResponseStream.Dispose();
                         SendSMSResponseStream = null;
                     }
                     if (SendSMSResponse != null)
                     {
                         SendSMSResponse.Close();
                         SendSMSResponse = null;
                     }
                     if (request != null)
                     {
                         request.Abort();
                     }
                 }
             }
             return rs;
         }

  

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/xxii/cc");
            request.Method = "POST";
            request.ContentType = "application/json;charset=UTF-8";
            //JavaScriptSerializer js = new JavaScriptSerializer();
            //JK.abc cs = new JK.abc();
            //cs.c = "ccc";
            //cs.b = "bbb";
            //cs.a = "aaa";
            //cs.dx = "ddds";
            //cs.id = 44;
            //string json = js.Serialize(cs);
            //json = null;
            var stream = request.GetRequestStream();
            using (var writer = new StreamWriter(stream))
            {
                //writer.Write(json);
                //writer.Flush();
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            var stream2 = response.GetResponseStream();
            byte[] bt = new byte[response.ContentLength];
            stream2.Read(bt, 0, bt.Length);
            string messHeader = Encoding.UTF8.GetString(bt);
            MessageBox.Show(messHeader);

public static string GetMobileConfByUserId(string userid)
         {
             string rs = null;
             if (!string.IsNullOrEmpty(userid))
             {
                 if (string.IsNullOrEmpty(strOnLine))
                 {
                     strOnLine = ConfigurationManager.AppSettings["OnLineUrl"];
                 }
                 ServicePointManager.DefaultConnectionLimit = 300;
                 System.GC.Collect();
                 CookieContainer cookieContainer = new CookieContainer();
                 // 设置提交的相关参数 
                HttpWebRequest request = null;
                 HttpWebResponse SendSMSResponse = null;
                 Stream dataStream = null;
                 StreamReader SendSMSResponseStream = null;
                 try
                 {
                     request = WebRequest.Create(strOnLine) as HttpWebRequest;
                     request.Method = "POST";
                     request.KeepAlive = false;
                     request.ServicePoint.ConnectionLimit = 300;
                     request.AllowAutoRedirect = true;
                     request.Timeout = 10000;
                     request.ReadWriteTimeout = 10000;
                     request.ContentType = "application/json";
                     request.Accept = "application/xml";
                     request.Headers.Add("X-Auth-Token", HttpUtility.UrlEncode("OpenStack"));
                     string strContent = "{"appId":"","method":"","tokenId":"","data":{"userAccountId":"" + userid + ""}}";             
                     byte[] bytes = Encoding.UTF8.GetBytes(strContent);                                        
                     request.Proxy = null;
                     request.CookieContainer = cookieContainer;
                     using (dataStream = request.GetRequestStream())
                     {
                         dataStream.Write(bytes, 0, bytes.Length);
                     }           
                     SendSMSResponse = (HttpWebResponse)request.GetResponse();
                     if (SendSMSResponse.StatusCode == HttpStatusCode.RequestTimeout)
                     {
                         if (SendSMSResponse != null)
                         {
                             SendSMSResponse.Close();
                             SendSMSResponse = null;
                         }
                         if (request != null)
                         {
                             request.Abort();
                         }
                         return null;
                     }
                     SendSMSResponseStream = new StreamReader(SendSMSResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                     string strRespone = SendSMSResponseStream.ReadToEnd();
                     
                     return strRespone;
                 }
                 catch (Exception ex)
                 {
                    
                     if (dataStream != null)
                     {
                         dataStream.Close();
                         dataStream.Dispose();
                         dataStream = null;
                     }
                     if (SendSMSResponseStream != null)
                     {
                         SendSMSResponseStream.Close();
                         SendSMSResponseStream.Dispose();
                         SendSMSResponseStream = null;
                     }
                     if (SendSMSResponse != null)
                     {
                         SendSMSResponse.Close();
                         SendSMSResponse = null;
                     }
                     if (request != null)
                     {
                         request.Abort();
                     }
                 }
                 finally
                 {
                     if (dataStream != null)
                     {
                         dataStream.Close();
                         dataStream.Dispose();
                         dataStream = null;
                     }
                     if (SendSMSResponseStream != null)
                     {
                         SendSMSResponseStream.Close();
                         SendSMSResponseStream.Dispose();
                         SendSMSResponseStream = null;
                     }
                     if (SendSMSResponse != null)
                     {
                         SendSMSResponse.Close();
                         SendSMSResponse = null;
                     }
                     if (request != null)
                     {
                         request.Abort();
                     }
                 }
             }
             return rs;
         }

  如果不通过request.write()的方式向接口post数据,将request.ContentLength属性设置为0,让后去掉request.write()方法即可!

/// <summary>
        /// 通过 WebRequest/WebResponse 类访问远程地址并返回结果,需要Basic认证;
        /// 调用端自己处理异常
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="timeout">访问超时时间,单位毫秒;如果不设置超时时间,传入0</param>
        /// <param name="encoding">如果不知道具体的编码,传入null</param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string Request_WebRequest(string uri, int timeout, Encoding encoding, string username, string password)
        {
            string result = string.Empty;

            WebRequest request = WebRequest.Create(new Uri(uri));

            if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
            {
                request.Credentials = GetCredentialCache(uri, username, password);
                request.Headers.Add("Authorization", GetAuthorization(username, password));
            }

            if (timeout > 0)
                request.Timeout = timeout;

            WebResponse response = request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader sr = encoding == null ? new StreamReader(stream) : new StreamReader(stream, encoding);

            result = sr.ReadToEnd();

            sr.Close();
            stream.Close();

            return result;
        }

        #region # 生成 Http Basic 访问凭证 #

        private static CredentialCache GetCredentialCache(string uri, string username, string password)
        {
            string authorization = string.Format("{0}:{1}", username, password);

            CredentialCache credCache = new CredentialCache();
            credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));

            return credCache;
        }

        private static string GetAuthorization(string username, string password)
        {
            string authorization = string.Format("{0}:{1}", username, password);

            return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
        }

        #endregion

basic验证的WebRequest/WebResponse

  

public static string GetHttp(string url, HttpContext httpContext)
    {
        string queryString = "?";

        foreach (string key in httpContext.Request.QueryString.AllKeys)
        {
            queryString += key + "=" + httpContext.Request.QueryString[key] + "&";
        }

        queryString = queryString.Substring(0, queryString.Length - 1);

        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url + queryString);

        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "GET";
        httpWebRequest.Timeout = 20000;

        //byte[] btBodys = Encoding.UTF8.GetBytes(body);
        //httpWebRequest.ContentLength = btBodys.Length;
        //httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);

        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
        string responseContent = streamReader.ReadToEnd();

        httpWebResponse.Close();
        streamReader.Close();

        return responseContent;
    }

Get方法(HttpWebRequest)

  

/// <summary>
        /// 通过WebClient类Post数据到远程地址,需要Basic认证;
        /// 调用端自己处理异常
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="paramStr">name=张三&age=20</param>
        /// <param name="encoding">请先确认目标网页的编码方式</param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password)
        {
            if (encoding == null)
                encoding = Encoding.UTF8;

            string result = string.Empty;

            WebClient wc = new WebClient();

            // 采取POST方式必须加的Header
            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

            byte[] postData = encoding.GetBytes(paramStr);

            if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
            {
                wc.Credentials = GetCredentialCache(uri, username, password);
                wc.Headers.Add("Authorization", GetAuthorization(username, password));
            }

            byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
            return encoding.GetString(responseData);// 解码                  
        }

POST方法(WebClient)

  

//body是要传递的参数,格式"roleId=1&uid=2"
//post的cotentType填写:
//"application/x-www-form-urlencoded"
//soap填写:"text/xml; charset=utf-8"
    public static string PostHttp(string url, string body, string contentType)
    {
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

        httpWebRequest.ContentType = contentType;
        httpWebRequest.Method = "POST";
        httpWebRequest.Timeout = 20000;

        byte[] btBodys = Encoding.UTF8.GetBytes(body);
        httpWebRequest.ContentLength = btBodys.Length;
        httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);

        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
        string responseContent = streamReader.ReadToEnd();

        httpWebResponse.Close();
        streamReader.Close();
        httpWebRequest.Abort();
        httpWebResponse.Close();

        return responseContent;
    }

POST方法(httpWebRequest)

  

原文地址:https://www.cnblogs.com/xiangxiong/p/6841505.html