//通过post方法远程获取一个页面;web:页面的路径;postData:post的数据信息
public static string Post(string Web, string postData)
{
string str = ""; //要返回的结果
postData = postData.Replace(" ", "%20");//替换空格
try
{
//获取URL并发送字串
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(Web);
//定义这个Stream是只是为了得到发送字串 经过编码之后得到的byte的长度。
//因为如果字符串中存在中文 使用postData.Length得到长度和编码之后的长度是不一样的
Stream myStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(myStream, Encoding.Default);//用默认编码 得到Stream
myStreamWriter.Write(postData);
myStreamWriter.Flush();
long len = myStream.Length;//目的完成
myStreamWriter.Close();//关闭流
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";//请求的类型
myHttpWebRequest.ContentLength = len;//长度
myHttpWebRequest.Method = "POST";//方式
Stream newStream = myHttpWebRequest.GetRequestStream();//得到请求数据流
//编码使用Encoding.Default ,用它得到的中文不会出现乱码,特别是把request("")得到的值写入sql数据库的时候
myStreamWriter = new StreamWriter(newStream, Encoding.Default);
myStreamWriter.Write(postData);
myStreamWriter.Close();
//获取本次的回馈,先创建接收回馈的类HTTPWEBRESPONSE
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//创建接收回馈的字节流类
Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
Encoding encode = System.Text.Encoding.Default;//默认编码
StreamReader readStream = new StreamReader(receiveStream, encode);
str = readStream.ReadToEnd();//读出返回字符串
readStream.Close();
myHttpWebResponse.Close();//关闭资源
return str;
}
catch (Exception e)
{
throw e;
}
}