在执行GET时,我想要传递给URL的一些参数
我用于构建URL的方法是:
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL: baseURL];
NSString* url = @"http://pretendurl.com/something";
NSMutableURLRequest *request = [httpClient requestWithMethod: @"GET"
path: url
parameters: params];
其中params是已填充的nsdictionary。
这会将参数添加到url文件中,但会将& format = json添加到URL的末尾。
我想知道如何在没有最后一块的情况下构建URL。我查看了AFNetworking源代码,但无法确定实际添加该位的位置。
提前致谢。
答案 0 :(得分:1)
您可以使用像这样的函数将字典参数转换为查询网址
-(NSString*) getQueryUrlFromDictionary:(NSDictionary*) dict usingUrlEncoder:(BOOL)makeUrlEncoded
{
if (dict == nil)
return @"";
NSMutableString* outputStr = [[NSMutableString alloc] initWithString:@""];
int px = 0;
for (NSString* key in dict) {
NSString* param = (NSString*) [dict objectForKey:key];
// using urlEncoding : look for NSString+URLEncoding.h implementation
if (makeUrlEncoded)
param = [param urlEncodeUsingEncoding:NSUTF8StringEncoding];
[outputStr appendFormat:@"%@=%@",key,param];
if ( px < ([dict count]-1 ) )
[outputStr appendString:@"&"];
px++;
}
return outputStr;
}
所以......
NSMutableURLRequest *request = [NSMutableURLRequest
requestWithURL: baseURL
cachePolicy: NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval: 60.f];
[request setHTTPMethod:@"GET"];
NSString* paramString = [self getQueryUrlFromDictionary:params usingUrlEncoder:YES];
NSData *postData = [paramString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[request setHTTPBody:postData];
我使用这样的东西并且工作正常,希望它有所帮助
答案 1 :(得分:-1)
对我来说一切都应该可以正常工作,但试试这个:
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:"http://pretendurl.com"]];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET"
path:@"something"
parameters:params];