///
/// 通过post方式调用web方法
///
///
///
///
public static string HttpPost(string Url, string postDataStr)
{
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//request.Method = "POST";
//request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = postDataStr.Length;
//StreamWriter writer = new StreamWriter(request.GetRequestStream(),Encoding.ASCII);
//writer.Write(postDataStr);
//writer.Flush();
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//string encoding = response.ContentEncoding;
//if (encoding == null || encoding.Length < 1) {
// encoding = "UTF-8"; //默认编码
//}
//StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
//string retString = reader.ReadToEnd();
//return retString;
string postString = postDataStr;//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来
byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取网页的编码方式
string url = Url;//地址
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可
byte[] responseData = webClient.UploadData(url, "POST", postData);//得到返回字符流
string srcString = Encoding.UTF8.GetString(responseData);//解码
return srcString;
}
切记,post调用中,如若含有“+”号,传输过程中会转换为空格,原因没有具体深究,解决方案,把“+”号以“%2B”代替可解决