Objective c ASIHttpRequest-如何将参数的NSDictionary转换为url编码的查询参数字符串?

Objective c ASIHttpRequest-如何将参数的NSDictionary转换为url编码的查询参数字符串?,objective-c,ios,asihttprequest,ios-4.2,Objective C,Ios,Asihttprequest,Ios 4.2,使用作为NSDictionary提供的查询参数,使用ASIHttpRequest发出GET请求的首选方法是什么。 我该怎么去 来自NSDictionary*参数 至?param1=value1¶m2=value2(编码百分比) 显然,我可以手动构造URL的查询部分,但似乎有更好的方法 谢谢 我没有使用AsittpRequest,但我对URL请求也有类似的需求。以下是我正在做的: - (NSString *) createParamString { NSDictionary *p

使用作为NSDictionary提供的查询参数,使用ASIHttpRequest发出GET请求的首选方法是什么。 我该怎么去 来自NSDictionary*参数
至?param1=value1¶m2=value2(编码百分比)

显然,我可以手动构造URL的查询部分,但似乎有更好的方法


谢谢

我没有使用AsittpRequest,但我对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]
}

不确定它是否适合所有情况,但对我来说已经足够好了

您必须将查询字符串作为URL的一部分传递。从上的
ASIHTTPRequest
界面:

如果您不想使用自己的字典查询字符串方法,请查看Google Toolbox for Mac(,)中的
GTMNSDictionary+URLArguments
类别。它向
NSDictionary
中添加了一个方法,
gtm\u httpArgumentString
,这应该是您所需要的。

如果params为空,您将在以下行中遇到问题:result=[result substringToIndex:[result length]-2];尝试添加条件:如果([结果长度]>=2)
// The url for this operation, should include GET params in the query string where appropriate
NSURL *url;