当前位置: 首页 > news >正文

福州建设企业网站/seo自学教程推荐

福州建设企业网站,seo自学教程推荐,网站建设周记300字,事件营销的案例IOS 基于 NSURLSession 进行 HTTP 请求前言GET 请求POST 请求以 application/json 数据段格式的 POST 请求为例以 multipart/form-data 数据段格式的 POST 请求为拓展文件下载文件上传结语前言 使用 IOS 内置控件 NSURLSession 进行 HTTP GET 请求,POST 请求&#…

IOS 基于 NSURLSession 进行 HTTP 请求

  • 前言
    • GET 请求
    • POST 请求
      • 以 application/json 数据段格式的 POST 请求为例
      • 以 multipart/form-data 数据段格式的 POST 请求为拓展
    • 文件下载
    • 文件上传
  • 结语

前言

使用 IOS 内置控件 NSURLSession 进行 HTTP GET 请求,POST 请求,文件的上传与下载,TCP 连接等。
本文将对这些请求进行介绍与举例。

GET 请求

HTTP GET 请求只需要传递 header 即可,封装在 header 中的 URL 承担了传递参数的作用,与此同时,也意味着这些参数将直接暴露给外界。

// 1. 创建 HTTP 请求对象// 创建请求路径 - URL 的格式NSURL *url=[NSURL URLWithString:@"http://172.18.176.202:3333/user?id=1"];// 创建 Request 对象,设置请求 urlNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 默认 Type 为 GET,因此无需设置 HTTPMethod
// 2. 发送 HTTP 请求// 创建会话NSURLSession *session=[NSURLSession sharedSession];// 发起任务(Task)NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {// ...}];// 结束任务 !!![dataTask resume];

POST 请求

以 application/json 数据段格式的 POST 请求为例

application/json 格式的数据段,适合一般数据的传输,如:字符串,数字等。只需使用 NSDictionary 创建字典对象,再将其序列化为 JSON 格式数据即可。

// 1. 创建 HTTP 请求对象// 创建请求路径 - URL 的格式NSURL *url=[NSURL URLWithString:@"http://172.18.176.202:3333/hw3/signup"];// 创建 Request 对象,设置请求 url + typeNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];[request setHTTPMethod:@"POST"];// 处理传入的参数,先使用 NSDictionary 创建一个包含请求参数键值对的字典对象NSDictionary *dic = @{@"name" : self.textFieldA.text,@"pwd"  : self.textFieldB.text};// 使用 NSJSONSerialization 将字典对象转为 json 字符串NSData *data_login = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];// 设置请求的 body 部分(数据段)request.HTTPBody = data_login;
// 2. 发送 HTTP 请求// 创建会话NSURLSession *session=[NSURLSession sharedSession];// 发起任务(Task)NSURLSessionDataTask *dataTask=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {// 接收服务器传回的数据对象(JSON 格式)id returnda=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];// 创建一个线程处理数据      [[NSOperationQueue mainQueue] addOperationWithBlock:^{// 先将 JSON 数据直接强制转为字典对象NSDictionary *dict=(NSDictionary *)returnda;// 使用 dict[@"XXX"] 获取 JSON 对象某个字段的数据if (![dict[@"msg"] isEqualToString:@"success"]){// 登录失败}else {// 登录成功}}];}];// 结束任务 !!![dataTask resume];

可以看到 使用 NSURLSession 进行 HTTP 请求有三个步骤:

  1. 创建请求(NSMutableURLRequest),这里需要我们加入请求的 URL,请求的数据类型和请求类型(POST、GET 等)。然后还需要加入 JSON 格式的数据(作为传入的参数),这里比较方便的方法就是先创建一个 NSDictionary 对象,把我们数据按字段填进去,然后 使用 NSJSONSerialization 进行序列化。
  2. 创建 NSURLSession 对象,然后发起 NSURLSessionDataTask,向服务器发起请求,并获取返回的数据。
  3. 最后,先将回调数据转为 JSON 对象,然后直接转为 NSDictionary 对象,就可以解析并获取我们需要的数据了。

以 multipart/form-data 数据段格式的 POST 请求为拓展

有时需要向服务器后台上传图片、文件等类型的数据。这时,再使用 application/json 格式的数据段就行不通了。
下面介绍如何使用 multipart/form-data 格式的数据段进行文件数据的上传。

// 1. 创建 HTTP 请求对象// 创建请求路径 - URL 的格式NSURL *url=[NSURL URLWithString:@"http://172.18.176.202:3333/user/myName"];// 创建 Request 对象NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// formdata 格式数据段特有要求,字段之间以及整个数据段结尾需要添加边界(BOUNDARY)NSString *BOUNDARY = @"0xKhTmLbOuNdArY";// 设置请求头(并设置我们用到的 BOUNDARY 的格式)[request setValue:[@"multipart/form-data; boundary=" stringByAppendingString:BOUNDARY] forHTTPHeaderField:@"Content-Type"];[request setHTTPMethod:@"PATCH"];// 设置请求的 body 部分(数据段)NSMutableData *body = [NSMutableData data];// param1 参数1NSString *param1 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data;name=\"%@\"\r\n\r\n%@\r\n",BOUNDARY,@"username",self.![textFieldA](https://img-blog.csdnimg.cn/20210414142852128.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUzNjczNw==,size_16,color_FFFFFF,t_70)
.text,nil];// 根据服务器接收数据的编码格式进行编码,此处使用 UTF-8 编码[body appendData:[param1 dataUsingEncoding:NSUTF8StringEncoding]];// param2 参数2,为一张图片,需要先将其转为 NSData 对象NSData *data1 = UIImageJPEGRepresentation(self.avatar.image, 1.0);NSString *param2 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\";filename=\"%@\"\r\nContent-Type: application/octet-stream\r\n\r\n",BOUNDARY,@"avatar",[@"image-" stringByAppendingFormat:@"%@.png",self.textFieldA.text],nil];[body appendData:[param2 dataUsingEncoding:NSUTF8StringEncoding]];[body appendData:data1];[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];//body结束分割线NSString *endString = [NSString stringWithFormat:@"--%@--",BOUNDARY];[body appendData:[endString dataUsingEncoding:NSUTF8StringEncoding]];[request setHTTPBody : body];// 2. 发送 HTTP 请求
// 与前一部分一致,不再赘述

multipart/form-data 数据段格式 HTTP 请求示意图
multipart/form-data 数据段格式 HTTP 请求示意图
示意图中,请求的数据段部分包含两个数据:一个字段名为 “username” 的字符串类型数据,一个字段名为 “avatar” 的图片文件类型数据。

文件下载

使用 NSURLDownloadTask。

// 1. 直接使用文件资源的 URL 即可// 创建请求路径 - URL 的格式NSURL *url=[NSURL URLWithString:@"http://172.18.176.202:3333/download/test.txt"];
// 2. 发送 HTTP 请求// 创建会话NSURLSession *session=[NSURLSession sharedSession];// 发起任务(Task)NSURLDownloadTask*downloadTask=[session dataTaskWithURL:url completionHandler:^(NSURL*location, NSURLResponse * _Nullable response, NSError * _Nullable error) {// location 为下载文件时,用户选择的希望文件保存的路径。如果为空,则存入默认的路径// ...}];// 结束任务 !!![downloadTask resume];

文件上传

借助 multipart/form-data 数据段格式的 POST 请求,使用 NSURLSessionUploadTask。

// 本地文件路径NSString * filePath = @"./text.txt";
// 1. 上传请求路径 - URL 的格式NSURL *url=[NSURL URLWithString:@"http://172.18.176.202:3333/upload/test"];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";[request setValue:[NSString stringWithFormat:@"multipart/form-data:boundary=%@", Kboundary] forHTTPHeaderField:@"Content-Type"];
// 2. 发送 HTTP 请求// 创建会话NSURLSession *session=[NSURLSession sharedSession];// 发起任务(Task)NSURLSessionUploadTask *uploadTask=[session dataTaskWithRequest:request fromData:[self getBodyData:filePath] completionHandler:^(NSURL*location, NSURLResponse * _Nullable response, NSError * _Nullable error) {// ...}];// 结束任务 !!![uploadTask resume];

结语

记录 IOS Objective-C 如何使用 NSURLSession 进行 HTTP 请求。


仅供参考,敬请指正。

http://www.lbrq.cn/news/1276399.html

相关文章:

  • 适合35岁女人的培训班/百度热搜关键词排名优化
  • 做网站要搭建什么平台/电商网站平台
  • 网站网页能自己做吗/全国疫情排行榜
  • 免费个人搭建网站/常用网站推广方法及资源
  • 推广营销海外网站/郑州seo顾问热狗
  • wordpress 百度地图xml/类聚seo
  • dreamwearver做网站地图/推广哪个网站好
  • 一个人做公司管理网站/全国疫情的最新数据
  • 如何做百度秒收录网站/b站广告投放平台入口
  • 目前流行的网站开发工具/如何让别人在百度上搜到自己公司
  • 延吉网站建设/深圳市昊客网络科技有限公司
  • 网站建设总做总结/西安网站制作公司
  • 黄浦做网站公司/客服系统网页源码2022免费
  • 给自己的网站做软件测试 步骤/百度公司官网招聘
  • 创建个人网站英文/中国搜索引擎
  • 怎么用dw做动态网站/seo裤子的关键词首页排名有哪些
  • 哪里做网站最好网站/最权威的品牌排行榜网站
  • 表格 wordpress/杭州seo优化公司
  • 同城购物网站怎么做/网页开发需要学什么
  • 男生做男生网站在那看/成品影视app开发
  • 首页优化的公司/鹤壁网站seo
  • 百度推广新手入门/宁波seo的公司联系方式
  • 网站建设纠纷/免费b站软件推广网站2023
  • 杭州模板建站定制网站/网络兼职平台
  • 房产网站建设价格/中国市场营销网
  • 网页设计如何设置背景/关键词优化的价格查询
  • WordPress文字添加/杭州seo推广优化公司
  • Tab标签切换wordpress/更先进的seo服务
  • 管局审核一定要能打开网站/宁德seo公司
  • 杭州品牌网站制作/关键词挖掘查询工具爱站网
  • Day15--二叉树--222. 完全二叉树的节点个数,110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和
  • 10. NAT,代理服务,内网穿透
  • Kubernetes 应用部署实战:为什么需要 Kubernetes?
  • 数据结构与算法:队列的表示和操作的实现
  • DIV 指令概述
  • 抵御酒店管理系统收银终端篡改攻击 API 加密的好处及实现——仙盟创梦IDE