2012-02-28 1 views
0

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

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

код я использую:

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 
+0

Есть ли вообще вложенное исключение? –

+0

Нет, нет –

+0

Можете ли вы ударить по этому URL-адресу с помощью приложения Browser? –

ответ

0

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