禁用HttpWebRequest的图像下载

时间:2016-09-29 14:48:21

标签: c# image httpwebrequest httprequest

是否可以说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>";
            }

2 个答案:

答案 0 :(得分:0)

我发现自己是一个很好的编码解决方案:

std::int64_t temp;
json_stream >> temp;
time_ = sys_time<milliseconds>{milliseconds{temp}};

这会杀死所有图像,但只有在您加载了所有图像后才会这样,因此此解决方案中的转移数据无法节省...

答案 1 :(得分:0)

HTTP/1.1 Header Field Definitions'部分14.1包含 Accept 标头定义。它陈述如下:

  

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

因此,如果它尊重客户的请求,则取决于服务器。

我发现大多数服务器都忽略了while ((current.x != startx) || (current.y != start))标头。到目前为止,我发现只有一个例外:它是GitHub。我请求带有音频的GitHub主页作为current.x != startx参数。它使用响应代码406做出了适当的响应。

请尝试使用以下代码段进行演示,您应该获得current.y != start

Accept