gpt4 book ai didi

httpwebrequest - 调用 HttpWebRequest.GetResponse() 时出现协议(protocol)错误

转载 作者:行者123 更新时间:2023-12-05 00:37:03 26 4
gpt4 key购买 nike

我有一个包含指向某些文件的链接的页面。

我基本上需要访问页面的源代码来解析它并获取文件的所有超链接。

我的代码是这样的(我在网上很多地方都找到了一些代码..):

    "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();
}"

现在的问题是我得到“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();
}

所有以 开头的变量常量_ 取自 Fiddler .

关于httpwebrequest - 调用 HttpWebRequest.GetResponse() 时出现协议(protocol)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com