开发者

ASIHttpRequest - how to convert NSDictionary of params to url-encoded query param string?

开发者 https://www.devze.com 2023-03-28 15:22 出处:网络
What is the preferred way to make a GET request with ASIHttpRequest using query params provided as an NSDictionary.

What is the preferred way to make a GET request with ASIHttpRequest using query params provided as an NSDictionary. How do I get from NSDictionary *params

to ?param1=value1&param2=value2 (percent-encoded)

Obviously I can开发者_Python百科 construct the query part of the URL manually but it seems like there is probably a better way.

Thanks!


You must pass the query string as part of the URL. From the ASIHTTPRequest interface on GitHub:

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

If you don't want to roll your own dictionary-to-query-string method, take a look at the GTMNSDictionary+URLArguments category in Google Toolbox for Mac (.h, .m). It adds a method, gtm_httpArgumentString, to NSDictionary that should be what you're after.


I am not using ASIHTTPRequest, but I have a similar need for a URLRequest I make. Here is what I am doing:

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

Not sure if it's perfect for all situations, but it's working well enough for me

0

精彩评论

暂无评论...
验证码 换一张
取 消