/**
 * 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];
}

转载于:https://www.cnblogs.com/pengyingh/articles/2438726.html

iphone网络交互json实现相关推荐

  1. JSON在Android网络交互中的使用方法

    在Android网络交互中使用到JSON传输接收数据. JSONObject为键值对形式的数据,内部使用LinkedHashMap实现.键的类型固定为String,值可取的类型在JSONObject, ...

  2. Android Volley 库通过网络获取 JSON 数据

    本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...

  3. 玩转iPhone网络通讯之BSD Socket篇

    玩转iPhone网络通讯之BSD Socket篇 编辑文档 在进行iPhone网络通讯程序的开发中,不可避免的要利用Socket套接字.iPhone提供了Socket网络编程的接口CFSocket,不 ...

  4. Android 网络交互之MD5为什么要加盐

    MD5为什么要加盐 之前面试的时候,遇到一个面试的哥哥.不停的跟我确认我对网络传输过程中的password进行MD5加密的时候,是否加key了. 当时我很纳闷,因为MD5本身已经是不可逆的了,需要破解 ...

  5. python底层网络交互模块_网络和并发编程(面试题)

    1,python的底层网络交互模块有哪些? 答案:socket, urllib,urllib3 , requests, grab, pycurl 2,简述OSI七层模型以及列举各层协议 应用层:HTT ...

  6. IOS之Swift5.x和OC网络请求JSON

    IOS之Swift5.x和OC网络请求JSON // // ViewController.m // 基于OC网络解析JSON // // Created by 鲁军 on 2021/3/11. //# ...

  7. Android 自定义 ListView 显示网络上 JSON 格式歌曲列表

    本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...

  8. 动态通过网络获取json来tabbar图片和文字或其他信息

    动态通过网络获取json来tabbar图片和文字或其他信息 转载于:https://www.cnblogs.com/TheYouth/p/6488843.html

  9. 基带混用导致信号弱?iPhone网络差的原因及修复,望周知

    基带混用导致信号弱?iPhone网络差的原因及修复,望周知 iPhone的手机信号问题,一直都是老生常谈的问题,但是并不是所有的iPhone的信号都是很差,有的时候就会发现两款相同iPhone手机,在 ...

最新文章

  1. GNN教程:图注意力网络(GAT)详解!
  2. 【C语言入门教程】2.7 表达式
  3. 【在还原SQL Server数据库时发生对于服务器“XXX”操作系统错误】很实用的解决方案...
  4. Windows下JDK开发环境搭建及环境变量配置
  5. 阿里最新分享Redis全套学习笔记PDF版,图文并茂,太详细了
  6. 原生js实现多语言切换
  7. Mstar的Monitor方案OSD 菜单制作(三)——添加字符串文字
  8. 游戏玩到这种程度,酱紫真的好吗?
  9. ENQUEUE_MIGRATED
  10. 打造APP引导页3D切换特效
  11. 抖音API分析,视频批量下载-初级
  12. python sci sci-hub 爬论文
  13. 使用Dash快速构建你的数据可视化前端
  14. Android效率组件篇 设置长按响应时间(时长)
  15. opencv android 透视,Opencv for Android 之透视变换
  16. 摩托罗拉v3的java游戏_重温经典!全新摩托罗拉V3采用折叠屏幕,街机王者归来!...
  17. 创建具体的产品,并继承产品抽象类
  18. Hash MSDN MD4 MD5 SHA1 CRC 详细解释
  19. 你的芯片,能抵挡住几次攻击?
  20. 什么是 Linux 下的 platform 设备驱动

热门文章

  1. JAVA单字节读取,java资料读取。(单字节读取和按行读取读取)
  2. php中qq第三方登录演示,实现腾讯qq第三方登录
  3. linux route 刷新_linux基础命令介绍十五:推陈出新
  4. 如何启动mongoDB并用Robo 3T连接
  5. Django项目与中间件与celery
  6. 汕头和汕头职业学院游记
  7. android 十八 蓝牙及Wi-Fi
  8. 数据结构(七)---循环队列的实现---java版
  9. java对redis的基本操作
  10. sklearn机器学习常用数据处理总结