在最近的项目中,需要跨域访问另一个网页,并要求传入数据,如于要传入的数据容量大,通过POST数据的方法把数据传输过去,因为GET方法只能传输2KB内的数据.
下面和大家分享这个功能实现的方法:
#region 请求执行远程网页并发送数据
/// <summary>
/// 请求执行远程网页并发送数据
/// </summary>
/// <param name="pageUrl"></param>
/// <param name="msg"></param>
/// <param name="reqType">1为GET,2为POST</param>
/// <returns></returns>
public static string requestUrl(string pageUrl, string msg, int reqType)
{
string strQuery = "SendData=" + Crypt.encrypt(msg); //对传输的数据进行加密
string returnValue = "";
if (reqType == 2)
{
WebRequest Wrequest = WebRequest.Create(pageUrl);
Wrequest.Timeout = 8000;
Wrequest.Method = "POST";
Wrequest.ContentType = "application/x-www-form-urlencoded";
string dataSend = strQuery;
Wrequest.ContentLength = dataSend.Length;
byte[] buff = Encoding.UTF8.GetBytes(dataSend);
Stream reqStream = Wrequest.GetRequestStream();
reqStream.Write(buff, 0, buff.Length);
reqStream.Close();
WebResponse Wresponse = Wrequest.GetResponse();
Stream repStream = Wresponse.GetResponseStream();
StreamReader sr = new StreamReader(repStream, Encoding.GetEncoding("GB2312"));
returnValue = sr.ReadToEnd().ToString();
sr.Close();
}
else if (reqType == 1)
{
WebRequest Wrequest = WebRequest.Create(pageUrl + "?" + strQuery);
Wrequest.Timeout = 8000;
WebResponse Wresponse = Wrequest.GetResponse();
Stream resStream = Wresponse.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.GetEncoding("GB2312"));
returnValue = sr.ReadToEnd().ToString();
resStream.Close();
sr.Close();
}
return returnValue;
}
#endregion
这种方法对执行远程网页和跨域访问网页很方便.
注意要引用using System.Net命名空间.