Я создаю веб-приложение C # .NET, которое постоянно отправляет запросы на сервер для сбора некоторой информации. Проблема в том, что для определенных веб-страниц для этого конкретного сервера этот веб-ответ всегда 404 не найден. Как ни удивительно, но я обнаружил, что, пока работает «Fiddler», проблема, кажется, исчезает, и запрос возвращается с успешным ответом. Я искал в Интернете с тех пор как искал ответ, но не нашел ни одного С другой стороны, после поиска в Интернете и анализа временной шкалы Фиддлера я пришел к некоторым выводам.
1.Fiddler загружает эти веб-страницы в буферизованном режиме, а мое приложение использует потоковый режим
2. Также представляется, что Fiddler повторно использует соединение или, другими словами, Keep-Alive установлен в true.
И теперь вопрос заключается в том, как я могу имитировать или имитировать способ, которым Fiddler загружает веб-ответ в режиме с буферизацией, и действительно ли Fiddler выполняет какой-то трюк (т.е. изменяет ответ), чтобы получить правильный ответ. Я использую HttpWebRequest и HttpWebResponse для запроса своих страниц. Мне нужен способ полной буферизации httpwebresponse перед возвратом данных клиенту (который является моим сервером).
публичная статическая строка getCookie (имя пользователя строки, пароль строки)
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("определенная ссылка");
request.UserAgent = "Mozilla/5.0 (Windows NT 6.0; rv:6.0.2) Gecko/20100101 Firefox/6.0.2";
request.Credentials = new NetworkCredential(username, password);
HttpWebResponse wr = (HttpWebResponse)request.GetResponse();
String y = wr.Headers["Set-Cookie"].ToString();
return y.Replace("; path=/", "");
}
/// <summary>
/// Requests the html source of a given web page, using the request credentials given.
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <param name="webPageLink"></param>
/// <returns></returns>
public static String requestSource(String username,String password,String webPageLink){
String source = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webPageLink);
if (username != null && password != null)
{
request.Headers["Cookie"] = getCookie(username, password);
request.UserAgent = "Mozilla/5.0 (Windows NT 6.0; rv:6.0.2) Gecko/20100101 Firefox/6.0.2";
request.Credentials = new NetworkCredential(username, password);
}
StreamReader sr;
using (HttpWebResponse wr = (HttpWebResponse)request.GetResponse())
{
sr = new StreamReader(wr.GetResponseStream());
source = sr.ReadToEnd();
}
return source;
}