HTTP GET работает в браузере, но не работает с HttpWebRequest

#c# #http #get #httpwebrequest

#c# #http #получить #httpwebrequest

Вопрос:

Название объясняет это. Я пытаюсь изменить пароль веб-страницы программно, используя HTTP веб-запрос. Когда я делаю это через Google Chrome (вставляя uri в адресную строку), смена пароля работает. Вот заголовок, который я получаю при проверке в Chrome.

 Remote Address:10.160.70.55:443
Request URL:https://10.160.70.55/cgi-bin/check_user.cgi?Type=basicamp;Current=78-62-118-112-106-108-56amp;Password=98-96-102-96-106-96
Request Method:GET

Accept:text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6,ar;q=0.4
Authorization:Digest username="admin", realm="Secure Access", nonce="f3c6fcd9a549a42e9aac22818cb0f5ad", uri="/cgi-bin/check_user.cgi?Type=basicamp;Current=78-62-118-112-106-108-56amp;Password=98-96-102-96-106-96", response="cd17523a279f044d086b5bd0245eda0e", qop=auth, nc=0000001b, cnonce="9bd719c27efd9721"
Connection:keep-alive
Host:10.160.70.55
  

Когда я пытаюсь сделать это программно, я получаю код OK (200), но смена пароля не работает. Вот мой код.

 System.Uri uri2 = new Uri(string.Format("https://{0}/cgi-bin/check_user.cgi?Type=basicamp;Current=78-62-118-112-106-108-56amp;Password=98-96-102-96-106-96", ip));
                        HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(uri) as HttpWebRequest;
                        request2.Accept = "text/html";
                        request2.Credentials = new NetworkCredential("admin", "M@ster1");
                        request2.Method = WebRequestMethods.Http.Get;
                        HttpWebResponse response2 = (HttpWebResponse)request.GetResponse();
                        WriteLog(response2.StatusDescription.ToString());

                        response2.Close();
  

Комментарии:

1. Можете ли вы использовать fiddler для отслеживания HTTP-запроса, отправляемого вашей программой, и сравнения с запросом браузера, чтобы увидеть разницу? Это должно указывать на проблему.

2. Являются ли эти опечатки uri-uri2, request-request2 ?

Ответ №1:

Использовал fiddler, как было предложено, и оказалось, что это заголовок user-agent. И спасибо за исправление опечатки L.B. 🙂