2011-08-15 6 views
0

NSDictionaryとして提供されるクエリパラメータを使用してASIHttpRequestでGET要求を行う好ましい方法は何ですか? はどうすれば?のparam1 = VALUE1 & PARAM2 = value2のにNSDictionaryの*のparams
から を得るか(パーセントエンコード)明らかにASIHttpRequest - paramsのNSDictionaryをURLエンコードされたクエリのparam文字列に変換する方法は?

私は手動でURLのクエリ部分を構築することができますが、おそらくより良い存在であるように思えます方法。

ありがとうございます!

答えて

4

を十分に働いている場合は、URLの一部としてクエリ文字列を渡す必要があり

- (NSString *) createParamString 
{ 
    NSDictionary *params = // build up the param dictionary  
    NSString *result = @""; 
    id key; 
    NSEnumerator *enumerator = [params keyEnumerator]; 
    while (key = [enumerator nextObject]) { 
     result = [result stringByAppendingFormat:@"%@=%@&", key, [params objectForKey:key]]; 
    } 
    result = [result substringToIndex:[result length] - 2]; 
    return [result stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 
} 

わからない:ここで私がやっているものです。 GitHubASIHTTPRequestインタフェースから:あなたがあなた自身の辞書・ツー・クエリ文字列の方法をロールバックしたくない

// The url for this operation, should include GET params in the query string where appropriate 
NSURL *url; 

場合は、Mac用のGoogleのツールボックス(.h.m)でGTMNSDictionary+URLArgumentsカテゴリを見てみましょう。これは、gtm_httpArgumentStringというメソッドをNSDictionaryに追加します。

3

私はASIHTTPRequestを使用していませんが、私は同様にURLRequestを作成する必要があります。それはすべての状況に最適ですが、それは私のため

+0

** params **が空の場合、次の行に問題があります。 result = [result substringToIndex:[result length] - 2]; 条件を追加してみてください: if([result length]> = 2) –

関連する問題