分解url转为post请求

来源:互联网 发布:手机的危害数据 英文 编辑:程序博客网 时间:2024/05/19 22:02

一些情况下,为了安全起见,我们需要把get方式的http请求处理成post方式。

比如,我们从后台拿到一个访问链接,如:http://www.test.qq.com/api/do?type=1&reason=test&flag=2

希望按如下方式发送请求:

post url:http://www.test.qq.com/api/do

post 参数:type 1

                     reason test

                     flag 2


怎么做呢,贴个比较简单的方式,直接做url分解就可以了。

-(void)approval:(NSString *)approvalUrl{    NSRange curRange = [approvalUrl rangeOfString:@"?"];    NSString *baseUrl = [approvalUrl mutableCopy];    NSString *paramStr = @"";    if (curRange.location != NSNotFound) {        baseUrl = [approvalUrl substringToIndex:curRange.location];        paramStr = [approvalUrl substringFromIndex:curRange.location+1];    }        NSURL *url = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];    NSLog(@"url is:%@", url);        NSDictionary *paramDic = [Utils parametersWithSeparator:@"=" delimiter:@"&" url:paramStr];       ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];    NSEnumerator *enumerator = [paramDic keyEnumerator];    id object;    while (object = [enumerator nextObject]) {        NSString *key = [NSString stringWithFormat:@"%@", object];        NSString *value = [NSString stringWithFormat:@"%@", [paramDic valueForKey:key]];        [request setPostValue:value forKey:key];    }        [request setTimeOutSeconds:5];    [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];    [request setDelegate:self];    [request setDidFinishSelector:@selector(requestSuccess:)];    [request setDidFailSelector:@selector(requestError:)];    [request setValidatesSecureCertificate:NO];    [request startAsynchronous];}

当然,如果需要做更复杂的url分解,可以考虑下正则表达式,后面再研究。

0 0
原创粉丝点击