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)