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

时间:2011-08-15 00:25:42

标签: objective-c ios asihttprequest ios-4.2

使用作为NSDictionary提供的查询参数,使用ASIHttpRequest发出GET请求的首选方法是什么。 如何得到 来自NSDictionary * params
to?param1 = value1& param2 = value2(百分比编码)

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

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

如果您不想推广自己的词典到查询字符串方法,请查看Google Toolbox for Mac中的GTMNSDictionary+URLArguments类别(.h,{{3 }})。它向gtm_httpArgumentString添加了一个方法NSDictionary,该方法应该是您所追求的。

答案 1 :(得分:3)

我没有使用ASIHTTPRequest,但我对我所做的URLRequest也有类似的需求。这就是我在做的事情:

- (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]
}

不确定它是否适用于所有情况,但它对我来说运作良好