В C #, как я могу создавать и анализировать вложенные строки запросов? - PullRequest
1 голос
/ 27 января 2012

Я пишу API и хотел бы, чтобы люди могли предоставить вызов API Google Charts в качестве аргумента.Как правильно деконструировать этот проблемный вызов API, когда аргумент содержит совершенно отдельный вызов API?

Например:

?method=createimage&chart1=https://chart.googleapis.com/chart?chs=250x100&chd=t:60,40&cht=p3&chl=Hello|World

В приведенном выше примере я хотел бы подуматьэто как (2) ключи строки запроса: метод и chart1 .Могу ли я проанализировать приведенный выше пример как 2 ключа строки запроса, оставив нетронутым вызов API Google Charts, а не разбив его?Могу ли я заключить вызов как JSON или что-то в этом роде?

Большое спасибо!Приветствия

Ответы [ 2 ]

6 голосов
/ 27 января 2012

Вот правильный путь (используя метод ParseQueryString ):

using System;
using System.Web;

class Program
{
    static void Main()
    {
        var query = "?method=createimage&chart1=https://chart.googleapis.com/chart?chs=250x100&chd=t:60,40&cht=p3&chl=Hello|World";
        var values = HttpUtility.ParseQueryString(query);
        Console.WriteLine(values["method"]);
        Console.WriteLine(values["chart1"]);
    }
}

и если вы хотите построить эту строку запроса:

using System;
using System.Web;

class Program
{
    static void Main()
    {
        var values = HttpUtility.ParseQueryString(string.Empty);
        values["method"] = "createimage";
        values["chart1"] = "https://chart.googleapis.com/chart?chs=250x100&chd=t:60,40&cht=p3&chl=Hello|World";
        Console.WriteLine(values);
        // prints "method=createimage&chart1=https%3a%2f%2fchart.googleapis.com%2fchart%3fchs%3d250x100%26chd%3dt%3a60%2c40%26cht%3dp3%26chl%3dHello%7cWorld"
    }
}

Да, кстати, то, что вы показали в своем вопросе, является неверной строкой запроса, что подтверждается выводом второго фрагмента кода, который я показал. URL должен кодировать ваш параметр chart1. Абсолютно против всех стандартов иметь более одного ? символа в строке запроса.

Вот как должна выглядеть правильная строка запроса:

?method=createimage&chart1=https%3A%2F%2Fchart.googleapis.com%2Fchart%3Fchs%3D250x100%26chd%3Dt%3A60%2C40%26cht%3Dp3%26chl%3DHello%7CWorld
0 голосов
/ 27 января 2012

URL должен кодировать URL в строке запроса, так как он содержит зарезервированные символы . Кроме того, шестнадцатеричное кодирование тоже отлично работает.

Как только вы это сделаете, вы можете обрабатывать два значения по отдельности, и анализ будет простым.

...