我有一个包含指向某些文件的链接的页面。
我基本上需要访问页面的源代码来解析它并获取文件的所有超链接。
我的代码是这样的(我在网上很多地方找到了一些代码......):
"private static byte[] ReadImageFromUrl(string url)
{
var myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.Timeout = 10000;
WebResponse myResp = myReq.GetResponse();
Stream stream = myResp.GetResponseStream();
List<byte> bytesList = new List<byte>();
using (var br = new BinaryReader(stream))
{
try
{
while (true)
{
var b = br.ReadByte();
bytesList.Add(b);
}
}
catch (Exception)
{}
br.Close();
}
myResp.Close();
return bytesList.ToArray();
}"
Run Code Online (Sandbox Code Playgroud)
现在的问题是我得到“System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。” 当调用“myReq.GetResponse()”时 - 检查错误我看到状态是“ProtocolError”。
WebException 对象的响应属性包含一些服务器错误..(尽管从浏览器打开它时它会正确打开)......而且当我用我的一个文件的 url 调用这个函数时,我得到了相同的 ProtocolError 状态,但是404错误...
请给出任何提示,我该如何解决它......或完成此任务的任何其他可能性。
谢谢 !
我使用后的新代码Fiddler是:
private static byte[] ReadFileFromUrl(string url)
{
var myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.Accept = const_AcceptHeader;
myReq.Headers.Set(const_AcceptLanguageHeaderName, const_AcceptLanguageHeader);
myReq.UserAgent = const_AcceptUserAgentHeader;
myReq.CookieContainer = new CookieContainer();
myReq.KeepAlive = true;
myReq.Timeout = Int32.Parse(ConfigSettings.RequestPageTimeout) * 1000;
WebResponse myResp = null;
List<byte> bytesList = null;
myResp = myReq.GetResponse();
Stream stream = myResp.GetResponseStream();
bytesList = new List<byte>();
using (var br = new BinaryReader(stream))
{
try
{
while (true)
{
var b = br.ReadByte();
bytesList.Add(b);
}
}
catch (Exception ex)
{
throw;
}
br.Close();
}
return bytesList.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
所有以const_开头的变量都取自Fiddler.
| 归档时间: |
|
| 查看次数: |
24590 次 |
| 最近记录: |