C#里POST数据需要一个byte[]
按照网上搜到的方法用
ASCIIEncoding AE = new ASCIIEncoding();
byte[] bytePost = AE.GetBytes(strData);
这样进行编码,结果中文全部是 乱码,已经弄得快晕了.......试了UTF8Encoding一大堆,又试了UrlEncoder方法,结果都不行问:
1 网页POST的数据最综是按照什么编码的? 做ajax时候说是可以统一用UTF-8解决问题? 但是那种%20类型编码应该是ANSI编码,那到底是怎么编码的呢?2 POST中文数据C#代码到底怎么写?
按照网上搜到的方法用
ASCIIEncoding AE = new ASCIIEncoding();
byte[] bytePost = AE.GetBytes(strData);
这样进行编码,结果中文全部是 乱码,已经弄得快晕了.......试了UTF8Encoding一大堆,又试了UrlEncoder方法,结果都不行问:
1 网页POST的数据最综是按照什么编码的? 做ajax时候说是可以统一用UTF-8解决问题? 但是那种%20类型编码应该是ANSI编码,那到底是怎么编码的呢?2 POST中文数据C#代码到底怎么写?
解决方案 »
- IReaper还能不能用了?
- 带有数据库的工程如何生成安装程序?
- 急求一C#编写的连续从固定目录读取文档程序
- .net 技术应用 群号:34938110
- partial calss? 允许相同类名? 这样又有什么用呢?
- 请教服务器运行一段时间后就会出现System.OutOfMemoryException的异常问题
- 孟子E章关于读数据库中图片显示到Web,究竟行不行得通呀??????????????????????????????????????
- 100分请教java.text.DecimalFormat和c#里的那个class相对应
- 大家看看这段代码谢谢!
- 数据绑定到ListView对象上
- 两个XmlDocument对象 能否比较他们是否相同?
- 如何捕捉插入记录时,主键或唯一索引重复引发的异常?
/// RequestUrl: request some url, return the response.
/// </summary>
/// <param name="strUrl">the url</param>
/// <param name="strPostDatas">the post data</param>
/// <param name="objCookieContainer">cookie's(session's) container</param>
/// <returns></returns>
public static string RequestUrl(string strUrl, string strPostDatas, ref CookieContainer objCookieContainer)
{
HttpWebResponse res = null;
string strResponse = ""; try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded"; if(objCookieContainer == null)
objCookieContainer = new CookieContainer();
req.CookieContainer = objCookieContainer;
StringBuilder objEncodedPostDatas = new StringBuilder();
byte[] postDatas = null; req.ContentLength = 0;
if (strPostDatas != null && strPostDatas.Length > 0)
{
string[] datas = strPostDatas.TrimStart('?').Split(new char[] {'&'});
for(int i=0; i<datas.Length; i++)
{
string[] keyValue = datas[i].Split(new char[] {'='});
if(keyValue.Length >= 2)
{
objEncodedPostDatas.Append(HttpUtility.UrlEncode(keyValue[0]));
objEncodedPostDatas.Append("=");
objEncodedPostDatas.Append(HttpUtility.UrlEncode(keyValue[1]));
if(i < datas.Length - 1)
{
objEncodedPostDatas.Append("&");
}
}
}
postDatas = Encoding.UTF8.GetBytes(objEncodedPostDatas.ToString());
req.ContentLength = postDatas.Length;
using(Stream reqStream = req.GetRequestStream())
{
reqStream.Write(postDatas, 0, postDatas.Length);
}
} res = (HttpWebResponse)req.GetResponse();
objCookieContainer = req.CookieContainer;
using(Stream resStream = res.GetResponseStream())
{
using(StreamReader sr = new StreamReader(resStream, Encoding.UTF8))
{
strResponse = sr.ReadToEnd();
}
}
}
catch(Exception ex)
{
strResponse = ex.ToString();
}
finally
{
if (res != null)
{
res.Close();
}
}
return strResponse;
}
string response = RequestUrl("www.123.com", "txt1=中文测试&txt2=中文测试", ref cc);
HttpUtility.UrlEncode默认使用UTF-8编码的,但是传到网页上是ANSI编码调用HttpUtility.UrlEncode时候需要指定 Encoding.Default类似strtxt = HttpUtility.UrlEncode(strtxt, Encoding.Default);