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)