C# 禁用HttpWebRequest的图像下载

C# 禁用HttpWebRequest的图像下载,c#,image,httpwebrequest,httprequest,C#,Image,Httpwebrequest,Httprequest,可以说webrequest只从站点获取基于文本的数据吗?如果是,我该怎么做 我唯一能想到的就是在响应字符串中搜索并删除所有图像标记。但这是一个非常糟糕的方法 编辑:这是我的代码片段: string baseUrl = kvPair.Value[0]; string loginUrl = kvPair.Value[1]; string notifyUrl = kvPair.Value[2]; cc =

可以说webrequest只从站点获取基于文本的数据吗?如果是,我该怎么做

我唯一能想到的就是在响应字符串中搜索并删除所有图像标记。但这是一个非常糟糕的方法

编辑:这是我的代码片段:

            string baseUrl = kvPair.Value[0];
            string loginUrl = kvPair.Value[1];
            string notifyUrl = kvPair.Value[2];
            cc = new CookieContainer();
            string loginDetails = DataCollector.GetLoginDetails(baseUrl, ref cc);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginUrl);
            request.Method = "POST";
            request.Accept = "text/*";
            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            request.CookieContainer = cc;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36";
            Byte[] data = Encoding.ASCII.GetBytes(loginDetails);
            request.ContentLength = data.Length;
            using (Stream s = request.GetRequestStream())
            {
                s.Write(data, 0, data.Length);
            }
            HttpWebResponse res = (HttpWebResponse)request.GetResponse();
            request = (HttpWebRequest)WebRequest.Create(notifyUrl);
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36";
            request.CookieContainer = cc;
            res = (HttpWebResponse)request.GetResponse();
            Stream streamResponse = res.GetResponseStream();
            using (StreamReader sr = new StreamReader(streamResponse))
            {
                ViewData["data"] += "<div style=\"float: left; margin-bottom: 50px;\">" + sr.ReadToEnd() + "</div>";
            }
string baseUrl=kvPair.Value[0];
字符串loginUrl=kvPair.Value[1];
字符串notifyUrl=kvPair.Value[2];
cc=新CookieContainer();
string loginDetails=DataCollector.GetLoginDetails(baseUrl,ref-cc);
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(loginUrl);
request.Method=“POST”;
request.Accept=“text/*”;
request.ContentType=“application/x-www-form-urlencoded;charset=UTF-8”;
request.CookieContainer=cc;
request.UserAgent=“Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/53.0.2785.116 Safari/537.36”;
Byte[]data=Encoding.ASCII.GetBytes(loginDetails);
request.ContentLength=data.Length;
使用(streams=request.GetRequestStream())
{
s、 写入(数据,0,数据长度);
}
HttpWebResponse res=(HttpWebResponse)request.GetResponse();
request=(HttpWebRequest)WebRequest.Create(notifyUrl);
request.UserAgent=“Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/53.0.2785.116 Safari/537.36”;
request.CookieContainer=cc;
res=(HttpWebResponse)request.GetResponse();
streamResponse=res.GetResponseStream();
使用(StreamReader sr=新StreamReader(streamResponse))
{
ViewData[“数据”]+=“”+sr.ReadToEnd()+“”;
}

我找到了一个很好的编码解决方案:

public static string StripImages(string input)
{
   return Regex.Replace(input, "<img.*?>", String.Empty);
}
公共静态字符串条带图像(字符串输入)
{
返回Regex.Replace(输入“”,String.Empty);
}
这会删除所有图像,但只有在您加载所有图像后才会删除,因此此解决方案中传输的数据不会有任何节省。

第14.1节包含Accept标头定义。它声明如下:

。。。如果存在Accept标头字段,并且如果服务器无法发送根据组合Accept字段值可接受的响应,则服务器应发送406(不可接受)响应

因此,如果服务器尊重客户机的请求,则由服务器决定

我发现大多数服务器忽略了
Accept
头。到目前为止,我只发现了一个例外:它是。我请求GitHub主页,并将音频作为
Accept
参数。它以响应代码406做出了适当的响应

请尝试以下演示片段,您将获得
System.Net.WebException:远程服务器返回错误:(406)不可接受。

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://github.com/");
request.Method = "GET";
request.Accept = "audio/*";

var response = request.GetResponse();

尝试将accept header设置为仅文本/htmlTry设置属性。@Crowcoder否不起作用您为
accept
属性设置了什么值?如果可能,请分享您的代码片段。@f.nasim已经修改了我的问题