Как справиться с методом POST с OpenRasta? - PullRequest
0 голосов
/ 22 октября 2010

У меня есть простой веб-сервис OpenRasta и консольный клиент для веб-сервиса.

Использовать метод GET довольно просто - я определил GET в OpenRasta, и когда клиент использует этот код, все отлично работает

 HttpWebRequest request = WebRequest.Create("http://localhost:56789/one/two/three") as HttpWebRequest;  

 // Get response  
 using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)  
 {  
     // Get the response stream  
     StreamReader reader = new StreamReader(response.GetResponseStream());  

     // Console application output  
     Console.WriteLine(reader.ReadToEnd());  

Однако, когда я пытаюсь использовать POST как этот

  Uri address = new Uri("http://localhost:56789/");

  HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
  request.Method = "POST";
  request.ContentType = "application/x-www-form-urlencoded";

  string one = "one";
  string two = "two";
  string three = "three";

  StringBuilder data = new StringBuilder();
  data.Append(HttpUtility.UrlEncode(one));
  data.Append("/" + HttpUtility.UrlEncode(two));
  data.Append("/" + HttpUtility.UrlEncode(three));

  byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
  request.ContentLength = byteData.Length;

  // Write data  
  using (Stream postStream = request.GetRequestStream())
  {
    postStream.Write(byteData, 0, byteData.Length);
  }

  // Get response  
  using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
  {
    StreamReader reader = new StreamReader(response.GetResponseStream());
    Console.WriteLine(reader.ReadToEnd());
  }
  Console.ReadKey();
}

Я получаю 500 Internal Server Error, и я не знаю, как справиться с этим в веб-сервисе OpenRasta.Как определить метод POST в Openrasta?Есть предложения?

1 Ответ

2 голосов
/ 09 ноября 2010

Код, который вы предоставляете, отправляет «один / два / три» и помещает его в содержание вашего запроса с типом носителя «application / x-www-form-urlencoded», это, вероятно, откуда ваша проблема, как то, что вы закодировали, не имеет ничего общего с указанным вами типом носителя.

Не зная, как выглядит ваш обработчик, я не могу сказать вам, что вы должны в него вставить. Однако я могу сказать вам, что если вы отправляете параметры, он должен выглядеть как key = value & key2 = value2 для этого типа медиа и не имеет ничего общего с тем, что будет в URI (ваш / one / two / three пример).

...