J'essaie de faire un simple service de repos WEB. Mon code est basé sur cet article : http://www.progware.org/Blog/post/A-simple-REST-service-in-C.aspx Je l'ai modifié un peu, pour que mon service puisse recevoir plusieurs paramètres. Voici mes modifications :
public string GetClientNameById(string LS, string Owner, string info)
{
.....
return System.IO.File.ReadAllText(XMLFileName, Encoding.GetEncoding(1251));
}
[ServiceContract(Name = "RESTServices")]
public interface IRESTServices
{
[OperationContract]
[WebGet(UriTemplate = Routing.GetEPDRoute, BodyStyle = WebMessageBodyStyle.Bare)]
string GetClientNameById(string Id,string LS,string tmp);
}
public static class Routing
{
public const string GetEPDRoute = "/EPD/{id}+{LS}+{tmp}";
}
Cela fonctionne bien avec des symboles anglais, mais j'ai besoin d'utiliser des symboles cyrilliques. Si j'utilise des symboles cyrilliques dans l'url, il renvoie une erreur 404. J'ai essayé d'utiliser le codage en pourcentage, mais le résultat est le même. Voici mon code client :
string url = "http://localhost:4385/Service.svc/EPD/995118466+" + System.Uri.EscapeDataString("") + "+434";
WebRequest req = WebRequest.Create(url);
using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
label1.Text = reader.ReadToEnd();
}
Avez-vous une idée de la façon de résoudre ce problème ?
UPDATE : J'ai trouvé une solution - il suffit de remplacer les symboles non anglais par des codes numériques, mais j'aimerais trouver une solution plus élégante.