网络编程(一) 利用NSURLSession发送GET POST请求

Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问。

使用NSURLSession进行网络请求的流程:

1.构造NSURL

2.构造NSURLRequest请求对象

3.构造NSURLSession会话对象

4.创建网络请求任务:dataTask, downloadTask, uploadTask

5.发送网络请求

1.GET 请求(GET一般用于获取/查询资源信息)

- (void)HTTPGET
{
    //1.构造NSURL
    NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"];
    //2.构造NSURLRequest请求对象
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    //对请求对象进行设置
    request.URL = url;
    request.HTTPMethod = @"GET";
    //3.构造NSURLSession会话对象(单例)
    NSURLSession *session = [NSURLSession sharedSession];
    //4.创建dataTask网络请求任务(请求任务有3种dataTask, downloadTask, uploadTask)
    /*
     (1)completionHandler:是网络请求完成后会回调的block
     (2)response代表响应对象,可以由它获取当前响应的状态,响应头数据
     (3)data代表服务器传输的数据,即响应体的内容
     (4)error代表请求过程中出现错误,可以用它进行调试。
     */
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
        //打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
        NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode);

        //这里返回的是json数据,对响应数据进行json解析
        id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"接收到的数据:%@",result);

    }];

    //5.开始发送网络请求或者是继续之前挂起的网络请求任务
    [dataTask resume];

}

2.POST请求(POST一般用于更新资源信息,也有很多情况是获取指定信息,需要在请求体里添加相应内容)

- (void)HTTPPOST
{
    //1.构造NSURL
    NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/schedule.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"];
    //2.构造NSURLRequest请求对象
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    request.URL = url;
    request.HTTPMethod = @"POST";

    NSString *bodyString = @"cinema_id=1533";
    request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
    //3.构造NSURLSession会话对象(单例)
    NSURLSession *session = [NSURLSession sharedSession];
    //4.创建dataTask网络请求任务
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        //打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
        NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
        NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode);
        //获取响应体数据,进行JSON解析
        NSError *jsonError = nil;
        id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
        NSLog(@"%@", result);
    }];

    [task resume];
}

打印结果

时间: 2024-11-03 22:52:59

网络编程(一) 利用NSURLSession发送GET POST请求的相关文章

C#网络编程(订立协议和发送文件)

C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg.Server02.jpg.Server03.

C# 网络编程之基于SMTP发送电子邮件

        本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件訪问协议),文章主要參考周存杰的<C#网络编程实例教程>.这也是最后一篇參照该书的网络编程文章,之后的该系列文章都是基于网络实际应用的,不会再大量讲述原理知识. 一.SMTP协议         SMTP协议是TCP/IP协议家族定义的机器间交换邮件的标准,它主要负责底层邮件系统怎样将一个报文从一台机器

Java 网络编程 字符流的发送与接收 自定义数据边界

在网络编程中,客户端调用了flush方法,就会将缓存在字符流中的文本发送给服务器,服务器该怎样判断客户端发送的文本已经结束了呢? 我们先看一个例子: 客户端: import java.io.IOException; import java.io.PrintWriter; import java.net.InetSocketAddress; import java.net.Socket; import java.util.Scanner; /** * Created by 290248126 on

Java网络编程:利用Java mail包发送电子邮件

下面代码是利用Java mail包封装了一个发送邮件的类 import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Me

iOS开发之网络编程--1、NSURLSession的基本使用

前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文<从 NSURLConnection 到 NSURLSession>,或者不用学习本人的博客园笔记直接学习<从 NSURLConnection 到 NSURLSession>也是可以的,这篇对NSURLSession的使用有着挺详细的论述.但是本文先粗略介绍一下NSURLSession的基

【Python网络编程】利用Python进行TCP、UDP套接字编程

之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接字将该行发送到服务器. 2.服务器从其连接套接字读取一行字符. 3.服务器将该行字符转换成大写. 4.服务器将修改后的字符串(行)通过连接套接字再发回给客户机. 5.客户机从其套接字中读取修改后的行,然后将该行在其标准输出(监视器)上打印出来. [TCP]服务器端代码: import socket

Linux 系统应用编程——网络编程(利用TCP/IP 模型分析数据传输过程)

TCP/IP参考模型是一个非常基础,而且也非常重要的基础框架,要想入门数通这是个必须掌握的基本概念,本文档通过一个简单的示例,结合参考模型来分析一下数通的基本过程. 网络环境非常简单,如下图所示,我们现在来分析一下PC去访问Webserver的WEB服务,整个数据通信过程是如何发生的,为了简化描述,我们这里暂时忽略DNS.ARP.帧校验等等机制的工作细节,只考虑较为宏观的层面. 1)PC访问WebServer的WEB服务,实际上是访问Webserver的HTTP服务.这个过程对于人来说,就是在P

Java网络编程 - 客户端向服务器端发送文件的简单实现

1.Client package cn.qi.Client; import java.io.*; import java.net.Socket; public class Client { Socket clientSocket; Client() { // 建立连接到服务器端的socket try { clientSocket = new Socket("127.0.0.1", 5000); } catch (IOException e) { e.printStackTrace();

C#网络编程(订立协议和发送文件) - Part.4

转载自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Recei