当Fiddler未运行时,服务器返回421 HTTP错误

时间:2016-11-17 17:43:45

标签: c# http httpwebrequest fiddler

我正在为Pixiv构建一个API,到目前为止,我已经设法完成了登录过程,并且按标签进行搜索也是如此。

现在我想下载所选网页上的图片。起初我得到了一些证书错误。我通过暂时忽略证书验证来解决这个问题。

然后发生了一件非常有趣的事情......如果Fiddler在后台运行 - 响应已成功收到,我可以下载图像。没问题,无论如何。

但是当Fiddler没有运行时,远程服务器返回了421错误代码

我已经尝试过的事情:

  • 手动关闭每个回复并使用“使用”声明
  • 强制执行Keep-Alive标题。
  • 明确声明使用HTTP / 1.1
  • 更改HttpWebRequest对象上的代理设置

我的图像请求代码如下所示:

"authSource=admin"

(我也在此之前发送请求以获取图像链接)

“imgLink”的例子:

  

https://i3.pixiv.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg

Fiddler显示发送的请求:

HttpWebRequest imagerequest = (HttpWebRequest)WebRequest.Create(imgLink);
imagerequest.Host = $"i.pximg.net";
imagerequest.UserAgent = USER_AGENT;
imagerequest.Accept = "image/webp,image/*,*/*;q=0.8";
imagerequest.Referer = post.PostLink;
imagerequest.Headers.Add("Accept-Encoding", "gzip, deflate, sdch, br");
imagerequest.Headers.Add("Accept-Language", "en-US,en;q=0.8,sl;q=0.6");

byte[] imagecontent;
using (var imageresponse = (HttpWebResponse)imagerequest.GetResponse())
{
    using (var imagestream = imageresponse.GetResponseStream())
    {
        imagecontent = imagestream.ReadStream();
    }
}

Fiddler没有显示任何违反HTTP协议的迹象。

1 个答案:

答案 0 :(得分:0)

似乎我只是失明了。 " imgLink "如果错误的主机名设置了整个时间,但我没有注意到它,因为主机名非常相似。我想Fiddler会自动为我解决这个问题......

下次我将确保三重检查主机名。感谢您的帮助。