none
Http post запрос и получения ответа (RAZOR) RRS feed

  • Вопрос

  •  // Create a request using a URL that can receive a post. 
    WebRequest request = WebRequest.Create("http://localhost/");
      //Set the Method property of the request to POST.
     request.ContentType = "text/xml";
     request.Method = "POST";
     // Create POST data and convert it to a byte array.
    
     string postData = @"<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
      <Username>xml</Username> 
      <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
     byte[] byteArray = Encoding.UTF8.GetBytes(postData);
     // Set the ContentType property of the WebRequest.
     request.ContentType = "application/x-www-form-urlencoded";
     // Set the ContentLength property of the WebRequest.
     request.ContentLength = byteArray.Length;
     // Get the request stream.
     Stream dataStream = request.GetRequestStream();
     // Write the data to the request stream.
     dataStream.Write(byteArray, 0, byteArray.Length);
     // Close the Stream object.
     //dataStream.Close();
     // Get the response.
     WebResponse response = request.GetResponse();
     // Display the status.
     Console.WriteLine(((HttpWebResponse)response).StatusDescription);
     // Get the stream containing content returned by the server.
     dataStream = response.GetResponseStream();
     // Open the stream using a StreamReader for easy access.
     StreamReader reader = new StreamReader(dataStream);
     // Read the content.
     string responseFromServer = reader.ReadToEnd();
     // Display the content.
     // Console.WriteLine(responseFromServer);
     // Clean up the streams.
     //reader.Close();
     //dataStream.Close();
     // response.Close();
    

    При помощи выше приведенного кода я отправляю запрос в удаленный сервис

    проблема в том что мне постоянно возвращяеться ощибка немогу понят в чем 

    отправляю запрос используя форму (html) который находится в postData все ок приходит ответ

    все это пытаюсь запустить используя Razor (WebMatrix)

    пример взят от сюда http://msdn.microsoft.com/en-us/library/debx8sh9.aspx


    • Изменено DrakonoffNet 24 марта 2011 г. 17:40 очепятка
    24 марта 2011 г. 17:38

Ответы

  • Нет, ответ вы получаете правильно. Попробуйет следующий код:

    WebRequest request = WebRequest.Create("http://localhost/");
       request.Method = "POST";
       request.ContentType = "application/x-www-form-urlencoded";
    
       string postData = @"<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    
       StreamWriter sw = new StreamWriter(request.GetRequestStream());
       sw.WriteLine(postData);
       sw.Close();
    
       WebResponse response = request.GetResponse();
       StreamReader sr = new StreamReader(response.GetResponseStream());
       string result = sr.ReadToEnd();
       sr.Close();
    
       Console.WriteLine(result);
    

    Если есть возможность, то посмотрите что приходит на удаленный сервис


    Для связи [mail]

    при помщи вашего решения и друзей у меня таки получилось решить свой вопрос.

    оказалось не хватало поставить xml= в 

       string postData = @"xml=<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    

    • Помечено в качестве ответа DrakonoffNet 4 апреля 2011 г. 14:25
    4 апреля 2011 г. 14:25

Все ответы

  • У вас 2 раза задается request.ContentType, посмотрите, вомзожно 1ый вариант правильный. Закрывайте dataStream после записи в него xml данных. Какой статус код возвращает сервис?


    Для связи [mail]
    25 марта 2011 г. 9:53
    Модератор
  • К сожедению нет это значения.

    Возможно моя ощибка в том что нетам снимаю ответ ?

    я его беру с responseFromServer

    <?xml version='1.0' encoding='UTF-8'?><XMLRequestErrors><Error>Empty XML request</Error></XMLRequestErrors>
    25 марта 2011 г. 11:06
  • Нет, ответ вы получаете правильно. Попробуйет следующий код:

    WebRequest request = WebRequest.Create("http://localhost/");
          request.Method = "POST";
          request.ContentType = "text/xml";
    
          string postData = @"<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    
          StreamWriter sw = new StreamWriter(request.GetRequestStream());
          sw.WriteLine(postData);
          sw.Close();
    
          WebResponse response = request.GetResponse();
          StreamReader sr = new StreamReader(response.GetResponseStream());
          string result = sr.ReadToEnd();
          sr.Close();
    
          Console.WriteLine(result);
    

    Если есть возможность, то посмотрите что приходит на удаленный сервис


    Для связи [mail]
    30 марта 2011 г. 8:29
    Модератор
  • К сожалению результат тот же попробую выяснить что на удаленный веб сервис приходит  
    31 марта 2011 г. 10:45
  • Нет, ответ вы получаете правильно. Попробуйет следующий код:

    WebRequest request = WebRequest.Create("http://localhost/");
       request.Method = "POST";
       request.ContentType = "text/xml";
    
       string postData = @"<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    
       StreamWriter sw = new StreamWriter(request.GetRequestStream());
       sw.WriteLine(postData);
       sw.Close();
    
       WebResponse response = request.GetResponse();
       StreamReader sr = new StreamReader(response.GetResponseStream());
       string result = sr.ReadToEnd();
       sr.Close();
    
       Console.WriteLine(result);
    

    Если есть возможность, то посмотрите что приходит на удаленный сервис


    Для связи [mail]
    Оказалось что к ним приходит пустой запрос :( 
    1 апреля 2011 г. 7:28
  • а что если это решить при помощи прокси файла, через который оформлять эти запросы ?

    но вот как это сделать ...

    4 апреля 2011 г. 5:23
  • Нет, ответ вы получаете правильно. Попробуйет следующий код:

    WebRequest request = WebRequest.Create("http://localhost/");
       request.Method = "POST";
       request.ContentType = "application/x-www-form-urlencoded";
    
       string postData = @"<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    
       StreamWriter sw = new StreamWriter(request.GetRequestStream());
       sw.WriteLine(postData);
       sw.Close();
    
       WebResponse response = request.GetResponse();
       StreamReader sr = new StreamReader(response.GetResponseStream());
       string result = sr.ReadToEnd();
       sr.Close();
    
       Console.WriteLine(result);
    

    Если есть возможность, то посмотрите что приходит на удаленный сервис


    Для связи [mail]

    при помщи вашего решения и друзей у меня таки получилось решить свой вопрос.

    оказалось не хватало поставить xml= в 

       string postData = @"xml=<XMLRequest>
     <RequestType>Destination</RequestType> 
     <RequestLogin>
     <Username>xml</Username> 
     <Password>request</Password> 
     </RequestLogin>
    </XMLRequest>";
    

    • Помечено в качестве ответа DrakonoffNet 4 апреля 2011 г. 14:25
    4 апреля 2011 г. 14:25