HttpWebRequest.GetResponse () генерирует исключение WebException - PullRequest
0 голосов
/ 28 февраля 2012

Я использую последнюю версию Monodroid, 4.04, и пытаюсь подключиться к устройству с помощью HttpWebRequest. Проблема, с которой я сталкиваюсь, заключается в том, что GetResponse вызывает исключение (см. Ниже). В отладчике, когда я устанавливаю точку останова, я вижу, что webRequest.HaveResponse == true, но в исключении ответ нулевой.

Почему я не могу получить ответ, когда он сообщает, что у него есть ответ?

Код, который я использую:

string responseFromServer;
        ServicePointManager.CertificatePolicy = new TestCertificatePolicy();

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://192.168.1.1/login.cgi");
        webRequest.KeepAlive = true;
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";
        webRequest.ContentLength = byteArray.Length;
        webRequest.ReadWriteTimeout = 10000;

        // Get the request stream.
        Stream dataStreamIn = webRequest.GetRequestStream();

        dataStreamIn.Write(byteArray, 0, byteArray.Length);
        dataStreamIn.Close();

        try
        {
            WebResponse response = webRequest.GetResponse(); <-- throws webexception
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);

            responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            dataStream.Close();
            response.Close();

            Console.WriteLine("Done");

        }
        catch (WebException we)
        {
            Console.WriteLine(we);
            throw;
        }

Вот исключение:

System.Net.WebException: Error getting response stream (ReadDone2): ReceiveFailure ---> System.Exception:    at System.Net.WebConnection.ReadDone(IAsyncResult result)
  at System.Net.WebConnection.HandleError (WebExceptionStatus st, System.Exception e, System.String where) [0x0003a] in /home/jon/Development/xamarin/mono/mcs/class/System/System.Net/WebConnection.cs:399 
  --- End of inner exception stack trace ---
  at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0005e] in /home/jon/Development/xamarin/mono/mcs/class/System/System.Net/HttpWebRequest.cs:828 
  at System.Net.HttpWebRequest.GetResponse () [0x0000e] in /home/jon/Development/xamarin/mono/mcs/class/System/System.Net/HttpWebRequest.cs:836 
  at MonoDroidTest.Activity1.GetStreamPage (System.String url) [0x000c2] in C:\Users\dave\Documents\Visual Studio 2010\Projects\MonoDroidTest\MonoDroidTest\Activity1.cs:277

1 Ответ

0 голосов
/ 02 марта 2012

Просто хотел сказать, что я решил эту проблему с помощью сокета. В любом случае это, вероятно, лучший способ из-за характера данных.

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