pátek 22. března 2013

Věčný problém s parsováním parametrů URL

Opakovaně řeším v serverové službě problém s parsováním parametrů.


  1. Když jsem si službu napsal jako WCF REST, tak jsem zjistil, že WCF neumí pracovat s dynamickým počtem parametrů. Tak jsem dynamické parametry zakódoval do stringu. Vše se zdálo v pohodě až do chvíle, kdy se v parametrech objevilo '/' nedokáže WCF příjmout HTTP request. Vadí mu lomítko navíc. Zde jsem řešení nenašel
  2. Když jsem službu napsal jako HttpListener, tedy pouze jednoduchý zachytávač HTTP requestů, tak jsem narazil na podobný problém se znakem '&'.

    Parametry jsem si naparsoval pomocí utility:
    NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
    http://localhost:8128/Action/ActionExecute/command=c:/notepad&.exe
    Dostal jsem výsledek:
    0) command=c:\notepad
    1) null = .exe
    Jak z toho ven (sto hoven)?
Nakonec jsem napsal dotaz na stackoverflow:
Parse Query string

Řešení je velmi jednoduché. Musíte dostat korektní QueryString, který má nahrazené řídící znaky escape sekvencí.

Žádné komentáře: