2012-01-26 11 views
1

私はAPIを書いており、人々がGoogle Charts APIコールを引数として提供できるようにしたいと考えています。この問題のあるAPI呼び出しを解体する適切な方法は何ですか。引数には完全に別のAPI呼び出しが含まれていますか?例えばC#では、ネストされたクエリーストリングをどのように構築し、解析できますか?

方法グラフ1:上記の例で

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

、I(2)クエリ文字列キーとして考えてみたいです。上記の例を2つのクエリ文字列キーとして解析して、Google Charts API呼び出しを破棄するのではなくそのまま残しておくことは可能ですか?コールをJSONなどで囲むことができますか?

ありがとうございます!乾杯は

答えて

6

ここでは、適切な方法(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" 
    } 
} 

ああ、途中で、何を示していますあなたの質問では、私が示している2番目のコードスニペットの出力によって確認される無効なクエリ文字列です。 chart1パラメータをURLエンコードする必要があります。クエリー文字列に複数の文字がある場合は、すべての標準に対して絶対に反対です。それはreserved charactersが含まれているとして、あなたは、あなたのクエリ文字列にURLをURLエンコードする必要があり

?method=createimage&chart1=https%3A%2F%2Fchart.googleapis.com%2Fchart%3Fchs%3D250x100%26chd%3Dt%3A60%2C40%26cht%3Dp3%26chl%3DHello%7CWorld 
+0

ハ!ありがとう。それよりも難しいと思った。私はまずそれを試しておくべきだった。あなたの助けをありがとう!多くの感謝。 –

0

:ここ

は正しいクエリ文字列は次のようになります方法です。あるいは、16進符号化もうまく動作します。

これを実行すると、2つの値を別々に扱うことができ、解析は簡単です。

関連する問題