我現在使用ServiceStack一段時間了,我對它提供的功能非常滿意。已經實施了它的服務和它的作用就像一個魅力。ServiceStack URI編碼
但是最近我遇到了一個問題,那就是用一個複雜的URL來調用其他服務時必須正確編碼。
的代碼如下:
的請求:
[Route("/instruments/{Names}")]
internal class Request
{
public List<string> Names { get; set; }
}
而且方法調用:
var request = new Request { Names = list };
var c = new JsonServiceClient("http://host:12345/");
Response[] response;
try
{
response = c.Get<Response[]>(request);
}
catch (WebServiceException ex)
{
HandleWebException(ex, list);
yield break;
}
而現在的問題是,有時,名稱可以包含一個特殊字符像空間或/。 我想要那些propery編碼。例如,我希望能夠使用以下參數調用遠程服務:「D \ S N」應該被編碼爲「D%5CS%20N」。 所以稱爲URL應該是這個樣子:
http://host:12345/instruments/D%5CS%20N
而現在的問題是,JsonServiceClient這裏確實不好編碼。 我所說的實際上是:
http://host:12345/instruments/D/S%20N
跟顯然是錯的。 任何幫助如何解決這個問題是appeciated。
嗨德米斯,感謝您的答案。 – 2014-11-25 13:13:05
嗨德米斯,謝謝你的回答。不幸的是它並沒有改變任何東西。客戶端仍在調用以下URL:http:// host:12345/instruments/D/S%20N。有趣的是,當我將Names參數更改爲查詢參數而不是Path參數時,它可以正常工作:http:// host:12345/instruments?names = D%5CS%20N。不幸的是我不能改變這個界面。 – 2014-11-25 13:22:12
你不能在param中有一個'/',它會像一個單獨的組件那樣對待。你可以改變它來使用通配符,這將吸收所有的路徑組件,即'[Route(「/ instruments/{Name *}」)]' – mythz 2014-11-25 14:37:22