Asp.Net 引擎可能是不錯,但是它把程序員想的太笨,會自以為是做很多自動的 Encode 和 Decode,以下文舉例:
如果客戶端我們 post 了如下的數據,

但是你實際得到的是:

也就是說,默認的調用 Asp.Net 引擎提供給我們的方法:
byte[] bytesToPost = httpLocalRequest.ContentEncoding.GetBytes(httpLocalRequest.Form.ToString());
我們將會得到一個錯誤的結果。
我們必須:
byte[] bytesToPost = ReadFully(httpLocalRequest.InputStream);
private byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
作者:cnblogs loogn
查看本欄目