WEB簡易安静サービスをやってみました。この記事に基づく私のコード: http://www.progware.org/Blog/post/A-simple-REST-service-in-C.aspx 少し変更したので、私のサービスはいくつかのパラメーターを取得できます。ここに私の変更があります:
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}";
}
英語の記号では問題なく動作しますが、キリル記号を使用する必要があります。URL にキリル文字を使用すると、404 エラーが返されます。パーセントエンコーディングを使用しようとしましたが、結果は同じです これが私のクライアントコードです:
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();
}
これを修正する方法はありますか?
更新:解決策を見つけました-英語以外の記号を数値コードに置き換えただけですが、よりエレガントな解決策を見つけたいです