Enc*_*ion 32 c# asp.net httpcontext system.web
我正在开发一个需要获取HTTP Post请求并将其读入字节数组以进行进一步处理的网页.我有点坚持如何做到这一点,我很难理解什么是最好的方法.到目前为止,这是我的代码:
public override void ProcessRequest(HttpContext curContext)
{
if (curContext != null)
{
int totalBytes = curContext.Request.TotalBytes;
string encoding = curContext.Request.ContentEncoding.ToString();
int reqLength = curContext.Request.ContentLength;
long inputLength = curContext.Request.InputStream.Length;
Stream str = curContext.Request.InputStream;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在检查请求的长度及其总字节数等于128.现在我只需要使用Stream对象将其转换为byte []格式吗?我正朝着正确的方向前进吗?不知道如何继续.任何建议都会很棒.我需要将整个HTTP请求放入byte []字段.
谢谢!
Jon*_*eet 58
最简单的方法是将其复制到MemoryStream
- 然后ToArray
在需要时调用.
如果您使用的是.NET 4,那非常简单:
MemoryStream ms = new MemoryStream();
curContext.Request.InputStream.CopyTo(ms);
// If you need it...
byte[] data = ms.ToArray();
Run Code Online (Sandbox Code Playgroud)
编辑:如果您不使用.NET 4,您可以创建自己的CopyTo实现.这是一个充当扩展方法的版本:
public static void CopyTo(this Stream source, Stream destination)
{
// TODO: Argument validation
byte[] buffer = new byte[16384]; // For example...
int bytesRead;
while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, bytesRead);
}
}
Run Code Online (Sandbox Code Playgroud)
fer*_*oze 17
您可以使用WebClient ...
WebClient c = new WebClient();
byte [] responseData = c.DownloadData(..)
Run Code Online (Sandbox Code Playgroud)
..
数据的URL地址在哪里.
小智 6
我使用MemoryStream
和Response.GetResponseStream().CopyTo(stream)
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
MemoryStream ms = new MemoryStream();
myResponse.GetResponseStream().CopyTo(ms);
byte[] data = ms.ToArray();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64058 次 |
最近记录: |