2010-10-22 9 views
0

J'ai un webservice OpenRasta simple et un client console pour le webservice.comment gérer la méthode POST avec OpenRasta?

En utilisant la méthode GET est assez facile - je définissais GET dans OpenRasta et lorsque le client utilise ce code tout fonctionne bien

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()); 

Cependant, lorsque je tente d'utiliser POST comme celui-ci

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(); 
} 

I obtenir 500 erreur de serveur interne et je ne sais pas comment gérer cela dans le service web OpenRasta. Comment est-ce que j'ai défini la méthode POST dans Openrasta? Aucune suggestion?

+1

Le code pour votre gestionnaire serait utile. –

Répondre

2

Le code que vous fournissez envoie "un/deux/trois" et le place dans le contenu de votre requête avec un type de média "application/x-www-form-urlencoded", c'est probablement d'où vient votre problème, car ce que vous avez encodé n'a rien à voir avec le type de média que vous avez spécifié. Sans savoir à quoi ressemble votre gestionnaire, je ne peux pas vous dire ce que vous devez y mettre. Je peux cependant vous dire que si vous envoyez des paramètres, il devrait ressembler à key = value & key2 = value2 pour ce type de média, et n'a rien à voir avec ce qui se passerait dans l'URI (votre exemple/one/two/three).

Questions connexes