博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iphone网络交互json实现
阅读量:6549 次
发布时间:2019-06-24

本文共 2983 字,大约阅读时间需要 9 分钟。

/**
 * url:请求地址
 * verb:请求方式
 * parameters:请求参数
 */
+(NSString *)sendRequestTo:(NSURL *)url usingVerb:(NSString *)verb withParameters:(NSDictionary *)parameters{
    NSString *jsonStr = nil;
    NSData *body = nil;
    NSMutableString *params = nil;
    NSString *contentType = @"text/html; charset=utf-8";
    NSURL *finalURL = url;
    if(nil != parameters){
        params = [[NSMutableString alloc] init];
        for(id key in parameters){
            NSString *encodedkey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            CFStringRef value = (CFStringRef)[[parameters objectForKey:key] copy];
            CFStringRef encodedValue = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, value,NULL,(CFStringRef)@";/?:@&=+$", kCFStringEncodingUTF8);
            [params appendFormat:@"%@=%@&", encodedkey, encodedValue];
            CFRelease(value);
            CFRelease(encodedValue);
        }
        [params deleteCharactersInRange:NSMakeRange([params length] - 1, 1)];
    }
    //
    if([verb isEqualToString:@"POST"]){
        contentType = @"application/x-www-form-urlencoded; charset=utf-8";
        body = [params dataUsingEncoding:NSUTF8StringEncoding];
    }else{
        if(nil != parameters){
            NSString *urlWithParams = [[url absoluteString] stringByAppendingFormat:@"?%@", params];
            finalURL = [NSURL URLWithString:urlWithParams];
        }
    }
    NSMutableDictionary *headers = [[[NSMutableDictionary alloc] init] autorelease];
    [headers setValue:contentType forKey:@"Content-Type"];
    [headers setValue:@"text/html" forKey:@"Accept"];
    [headers setValue:@"no-cache" forKey:@"Cache-Control"];
    [headers setValue:@"no-cache" forKey:@"Pragma"];
    [headers setValue:@"close" forKey:@"Connection"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    [request setHTTPMethod:verb];
    [request setAllHTTPHeaderFields:headers];
    if(nil != parameters){
        [request setHTTPBody:body];
    }
    [params release];
    //
    NSURLResponse *response;
    NSError *error = nil;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    if(error){
        NSLog(@"something is wrong: %@", [error description]);
    }else{
        if(responseData){
            jsonStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
        }
    }
    return  jsonStr;
}
+(void)testRequest{
    NSLog(@"test request...");
    NSString *getUrl = @"http://192.168.222.1:8080/vgirl/isVgirl.php";
    NSString *postUrl = @"http://192.168.222.1:8080/vgirl/isVgirlByPost.php";
    NSMutableDictionary *dlist = [[NSMutableDictionary alloc] init];
    [dlist setObject:@"pig" forKey:@"uid"];
    [dlist setObject:@"access token" forKey:@"AccessToken"];
    [dlist setObject:@"access token secret" forKey:@"AccessTokenSecret"];
    NSString *jsonStrGet = [NetAPI sendRequestTo:[NSURL URLWithString:getUrl] usingVerb:@"GET" withParameters:dlist];
    NSLog(@"do get: jsonStrGet = %@", jsonStrGet);
    NSString *jsonStrPost = [NetAPI sendRequestTo:[NSURL URLWithString:postUrl] usingVerb:@"POST" withParameters:dlist];
    NSLog(@"do post: jsonStrPost = %@", jsonStrPost);
    [dlist release];
}

转载地址:http://gfyco.baihongyu.com/

你可能感兴趣的文章
各个平台 如何安装 Ruby 和 RubyGems
查看>>
九. 200创业教训万元获得--“神刻”这是忽悠?
查看>>
eclipse maven plugin 插件 安装 和 配置
查看>>
Swift - 控制流/控制结构说明(if,switch,for,while)
查看>>
五个有用的jquery小技巧
查看>>
算法-三向字符串快速排序
查看>>
Spring 3.1新特性之二:@Enable*注解的源码,spring源码分析之定时任务Scheduled注解
查看>>
Oracle DISTINCT A 排序问题(转)
查看>>
Objective-C:KVC机制
查看>>
身份证查询API
查看>>
iText5报表_页眉与页脚
查看>>
javascript:void(0) ,设置a链接无效,设置点击a页面不刷新,不跳动
查看>>
两台linux服务器之间实现挂载
查看>>
keyup与setInterval
查看>>
python --批量重命名文件名
查看>>
QQ三方登录
查看>>
NTP方式保证以时间戳同步可靠性
查看>>
开源的服务发现
查看>>
lucene.net 使用过程中的 几个注意事项(含termquery 和QueryParser 的区别)
查看>>
Android开发之音乐播放器的实现
查看>>