Сервер отправил нарушение протокола, раздел = ResponseStatusLine. С Httpgetresponse и Xpath - PullRequest
1 голос
/ 24 марта 2020

У меня есть программное обеспечение, которое я пишу для управления локальным коммутатором в сети LAN, скажем, по IP-адресу 192.172.0.23:8000, всякий раз, когда я пытаюсь загрузить status.xml с коммутатора или получить В ответ я получаю сообщение о нарушении протокола разделом = исключение responseStatusLine.

Я искал на этих форумах и попробовал исправить keepalive = false, у меня есть

  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing = "true"/>
    </settings>
  </system.net>

в разделе конфигурации App.Config, но не могу решить проблему, я знаю, Адреса действительны, так как я могу получить к ним доступ в Firefox, et c, две строки кода, которые создают проблему, являются следующими:

     String URLString = @"http://" + sIP + @"/state.xml";
        try
        {
            //m_wClient.DownloadFile(URLString, @"C:\Sonardyne\test.xml"); // atempt to download file first to fix issue
            XPathDocument doc = new XPathDocument(URLString);
            XPathNavigator nav = doc.CreateNavigator();
            XPathExpression expr = nav.Compile(@"/datavalues/relaystate");
            nav.Select(expr);
            switch (nav.Value)
            {
                case "0":
                    return false;
                case "1":
                    return true;
                default:
                    ConfigLoadedText.Text = "Failed to Load Satus from Controller IP:" + sIP;
                    return false;
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
            ConfigLoadedText.Text = e.Message + " IP:" + sIP;
            return false;
        }

И

            string sCommand = @"http://" + sIP + @"/state.xml?relayState=0"; // set the HTTP address to request to enable/disable the relay
            if (bRelayState)
            {
                sCommand = @"http://" + sIP + @"/state.xml?relayState=1";
            }
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sCommand);
            request.KeepAlive = false;
            //request.ServicePoint.Expect100Continue = true;
            //request.ProtocolVersion = System.Net.HttpVersion.Version10; // set protocol version to try remove exception
            request.GetResponse();

В настоящий момент это действительно озадачено, и из-за всей ситуации с Коронавирусом невозможно получить какую-либо помощь от людей в офисе, поэтому любая помощь будет принята с благодарностью. Это мой первый пост здесь, так что, если я сделал что-то не так, пожалуйста, не будьте слишком строги sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...