iOS_POST_网络请求

同步的 post 请求

#pragma mark - 同步的 post 请求
- (IBAction)POSTSynButtonDidClicked:(UIButton *)sender {

    // 1、拼接 baseUrlString
    NSString *baseUrlString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";

    // 2、根据字符串创建 URL(统一资源定位符)
    NSURL *url = [NSURL URLWithString:baseUrlString];

    // 3、创建可变的 request 对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    // 1> 设置请求类型为 POST (默认为 GET)
    [request setHTTPMethod:@"POST"];

    // 2> 需要设置 POST 参数
    NSString *bodyString = @"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
    // 把字符串转化为 NSData
    NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:bodyData];

    // 4、请求数据(同步)
    NSData *receiveData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    // 5、系统自带json解析
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:receiveData options:(NSJSONReadingMutableContainers) error:nil];

    NSArray *array = dict[@"news"];

    self.newsArray = [NSMutableArray array];

    for (NSDictionary *smallDict in array) {
        NewsModal *modal = [[NewsModal alloc] init];
        [modal setValuesForKeysWithDictionary:smallDict];
        [self.newsArray addObject:modal];
    }

    for (NewsModal *modal in self.newsArray) {
        NSLog(@"%@", modal.title);
    }
}

异步的 post 请求

#pragma mark - 异步的 post 请求
- (IBAction)POSTAsynButtonDidClicked:(UIButton *)sender {

    // 1、拼接 baseUrlString
    NSString *baseUrlString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";

    // 2、根据字符串创建 url(统一资源定位符)
    NSURL *url = [NSURL URLWithString:baseUrlString];

    // 3、创建可变 request 对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    // 设置 request 对象的相关属性
    // 1>设置默认请求类型为 POST
    [request setHTTPMethod:@"POST"];

    // 2>设置POST参数
    NSString *bodyString = @"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
    // 3>把字符串转化为 NSData
    NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:bodyData];

    // 4、请求数据(异步)
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        // 5、系统自带json解析
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil];

        NSArray *array = dict[@"news"];

        self.newsArray = [NSMutableArray array];

        for (NSDictionary *smallDict in array) {
            NewsModal *modal = [[NewsModal alloc] init];
            [modal setValuesForKeysWithDictionary:smallDict];
            [self.newsArray addObject:modal];
        }

        for (NewsModal *modal in self.newsArray) {
            NSLog(@"%@", modal.title);
        }

        // 对 tableView 进行 reloadData 否则第一次不显示内容
    }];

}

版权声明:本文为outlan原创文章,未经博主允许不得转载。

时间: 2024-10-01 07:53:15

iOS_POST_网络请求的相关文章

ios编程之网络请求

网络请求有GET请求和POST请求,get和post实现的时候可以选择同步或者异步实现.看一个请求是GET还是POST就看网址后面有没有携带请求体. GET与POST 区别 1.get请求 请求的网址全部明文显示 安全性不高 2.get请求 请求的网址 有字符数的限制 大概255个 3.post请求 请求的网址 不光是有一个请求的网址 还可以携带请求体 这个请求体 是以NSData形式存在 安全性较高 4.post请求没有字符数的限制 GET同步和GET异步 同步请求是在请求数据的时候不能做其他

Swift网络请求(Moya篇)

在使用Alamofire进行网络请求的时候,相信大部分的同学都会封装一个抽象的NetworkLayer,如"APIManager" 或者 "NetworkModel"等等.但是位置业务功能增加,会渐渐混合各种请求,不够清晰,而Moya能很好地解决这类问题.Moya在Alamofire基础上进行封装,是一个允许高度自定义的网络层,可以根据具体的需求进行接口的设置.具体的介绍可以参考Moya的官方链接,结构图如下: 接下来就介绍一下Moya的一些常见的用法: (一)根据

微信小程序 网络请求之re.request 和那些坑

微信小程序有四种网络请求类型,下面只详细介绍普通HTTPS请求(wx.request) 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 首先,先确认是否设置了合法域名,或者在开发环境下不校验合法域名.关于设置合法域名请看→微信小程序 网络请求之设置合法域名   以下是wx.request的详细说明,截图于微信小程序开发文档 在微信index.js 发起一个普

Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所帮助. 首先按照惯例先来简单了解一些AsyncHttpClient网络框架的一些知识. 1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-a

Go实战--实现一个自己的网络请求日志httplogger(The way to go)

生命不止,继续go go go~~~ 之前我们简要介绍了go语言中的log package 和 net/http package,那么我们今天就干点实事儿,将二者结合,实现我们自己的日志记录网络请求. 另外,我们还没有跟你介绍time package,但是也可以看懂的. 首先,我默认你了解go语言的组织结构. 导入需要的package 我们需要 log net/http time三个包 package httplogger import ( "log" "net/http&q

Android实际开发之网络请求组件的封装(OkHttp为核心)

趁周末时间撸了两天代码,将OkHttp网络请求框架进行了一次简单封装,对于实际开发非常有用.. 此次封装主要针对我们经常使用的网络请求的步骤进行封装,在已有框架OkHttp的基础上进行实际开发的封装 发送一个网络请求,有以下三个功能模块: 一:request处理 二:OkHttp核心处理 三:callback处理 我们进行网络请求组件的封装也是根据这三大模块进行封装的,下面规划一下这次封装的一个思维导图: 根据以上思维导图,我们第一步,先进行request的封装: 以下是封装的一个CommonR

【Swift】Alamofile网络请求数据更新TableView的坑

写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的回答, 而唯一几个比较接近答案的,说要 self.tableView.reloadData(),也没有贴上代码,说要放在哪个函数内, 都犹抱琵琶半遮面,让初学者自己采坑,于是郁闷了一下午,刚刚回到家,试想想,要不试试英文网,毕竟Swift就是人家老外的, 说不定老外会告诉你,怎么取得数据并绑定Tab

网络请求三方库——OkHttp

我们知道在Android开发中是可以直接使用现成的API进行网络请求的,就是使用 HttpClient 和 HttpURLConnention ,而Android 4.4 之后 HttpClient 已经被废弃,由于此前一直很流行的三方库 android-async-http 是基于 HttpClient 的,所以作者已经放弃了维护 android-async-http 库,我们在项目中也尽量不要使用这个库. OkHttp是Squaur公司开源的一个高性能Http请求库,它的职责同 HttpUR

Volley源码(2):执行网络请求的流程

上一篇(http://blog.csdn.net/szxgg/article/details/51345859)讲述了当我们调用Volley.newRequest()时,Volley内部这个类做了什么,其实Volley这个类就做了一件事情,就是实例化了RequesQueue,这也符合设计模式中的单一职责,其实主要的处理都在其他类中,有三个类最重要,HttpStack/Network/RequestQueue,之后会讲解这些类的关系及作用,那首先还是结合我们使用Volley时的情形来看看源码内部执