IOS-HTTP请求

iOS发送http请求 前言苹果公司在全球开发者大会(WWDC)的一场安全演示会上,公布了一个最后期限——2017 年 1 月 1 日——即 App Store 当中的所有应用必须在这个日期之前启用一项名为 App Transport Security 的重要安全功能。App Transport Security,简称 ATS,是苹果在 iOS 9 当中首次推出的一项安全功能。在启用 ATS 之后,它会强制应用通过 HTT 阅读详情

HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

(1) 建立TCP连接

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80

(2) Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令
例如:GET/sample/hello.jsp HTTP/1.1

(3) Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

(4) Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,
HTTP/1.1 200 OK
应答的第一部分是协议的版本号和应答状态码####(5) Web服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

(6) Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

(7) Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

HTTP请求格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:
1. 请求方法URI协议/版本
2. 请求头(Request Header)
3. 请求正文
下面是一个HTTP请求的例子:
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,/
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234

(1) 请求方法URI协议/版本

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

(2) 请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
Accept:image/gif.image/jpeg./
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

(3) 请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。


HTTP请求方法我这里只讨论GET方法与POST方法

1、 GET方法

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

2、 POST方法

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。
  从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。


HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:
1. 协议状态版本代码描述
2. 响应头(Response Header)
3. 响应正文
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112


HTTP响应示例


Hello HTTP!

协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
HTTP/1.1 200 OK响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:
   Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
响应正文响应正文就是服务器返回的HTML页面:
  
HTTP响应示例


Hello HTTP!


响应头和正文之间也必须用空行分隔。  

HTTP应答码

   HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
 1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
 2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500
对于我们Web开发人员来说掌握HTTP应答码有助于提高Web应用程序调试的效率和准确性。

安全连接

Web应用最常见的用途之一是电子商务,可以利用Web服务器端程序使人们能够网络购物,需要指出一点是,缺省情况下,通过Internet发送信息是不安全的,如果某人碰巧截获了你发给朋友的一则消息,他就能打开它,假想在里面有你的信用卡号码,这会有多么糟糕,幸运的是,很多Web服务器以及Web浏览器都有创立安全连接的能力,这样它们就可以安全的通信了。
通过Internet提供安全连接最常见的标准是安全套接层(Secure Sockets layer,SSl)协议。SSL协议是一个应用层协议(和HTTP一样),用于安全方式在Web上交换数据,SSL使用公开密钥编码系统。从本质讲,这意味着业务中每一方都拥有一个公开的和一个私有的密钥。当一方使用另一方公开密钥进行编码时,只有拥有匹配密钥的人才能对其解码。简单来讲,公开密钥编码提供了一种用于在两方之间交换数据的安全方法,SSL连接建立之后,客户和服务器都交换公开密钥,并在进行业务联系之前进行验证,一旦双方的密钥都通过验证,就可以安全地交换数据。

GET通过**请求**URI得到资源
POST,用于添加新的内容
PUT用于修改某个内容
DELETE,删除某个内容
CONNECT,用于代理进行传输,如使用SSL
OPTIONS询问可以执行哪些**方法**
PATCH,部分文档更改
PROPFIND, (wedav)查看属性
PROPPATCH, (wedav)设置属性
MKCOL, (wedav)创建集合(文件夹)
COPY, (wedav)拷贝
MOVE, (wedav)移动
LOCK, (wedav)加锁
UNLOCK (wedav)解锁
TRACE用于远程诊断服务器
HEAD类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据

本文转自http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html

iOS HTTP网络请求基础与实战指南 htmltable {th, td {th {pre {简介:在iOS开发中,通过HTTP协议进行数据交互是常见需求。本教程详细讲解了如何在iOS应用中执行同步和异步的GET与POST请求,涵盖了使用和实现网络请求的基础知识。同时,也提及了使用过时的库的示例,以及在实际开发中需要考虑的错误处理和网络监测等高级话题。 阅读详情

相关推荐

ios-http.zip

同时访问两个服务器,判断先访问哪个服务器

IOS开发之——网络-HTTP请求(4)

一 概述 HTTP网络请求中的几个概念 IOS中发送HTTP请求 HTTP请求示例 二 HTTP网络请求中的几个概念 2.1 URL 什么是URL URL的全称是Uniform Resource Locator,统一资源定位符 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址、位置,互联网上的每个资源都有唯一的URL URL的基本格式 协议://主机地址/路径 http://192.168.0.1/img/a.gif 协议:不同的协议,代表着不同的资源查找方式、资源传输方式

我的博客 1850

ios 系统自带http请求方法整理

系统http请求方法整理ios

iOS中的HTTP请求处理

IOS中的HTTP请求处理 一、HTTP协议 1、定义 HTTP的全称:超文本传输协议,用来定制传输数据的规范(客户端和服务器之间的数据传输规范) HTTP完整通信过程:请求行、请求头、请求体 二、通信过程 1、请求(客户端到服务端) 状态行 请求头(描述客户端信息) 请求体(POST请求才有,存放具体数据) 2、响应(服务端到客户端)

RangingWon的博客 1712

ios Http请求,得到用户IP

一个NSURLRequest,一个NSURLConnection,请求结束之后反回用户可路由IP

iOS Http 网络请求(目前最流行的AFNetworking)

iOS Http 网络请求(目前最流行的AFNetworking),献给刚入门的同学们好好学习。

解决iOS开发不能使用HTTP请求的问题

苹果公司在iOS9中升级了应用网络通信安全策略,默认推荐开发者使用HTTPS协议来进行网络通信,并限制HTTP协议的请求。为了解决这个问题,我们需要在info.plist文件中增加如下配置来实现广告的网络访问:(信任HTTP请求)右击“Info.plist”——>Open As——>Source Code,将如下代码复制进去即可!

专注、专心、专业 1758

iOS的HTTP请求和请求回执类用法小结

请求类NSURLRequest NSURLRequest类中常用方法和属性总结: //通过类方法创建默认的请求对象 /* 通过这种方式创建的请求对象 默认使用NSURLRequestUseProtocolCachePolicy缓存逻辑 默认请求超时时限为60s */ + (instancetype)requestWithURL:(NSURL *)URL; //返回一个BOOL值 用于判断是否支持安全编码 + (BOOL)supportsSecureCoding; //请求对象的初始化方法 创建时设置缓存逻辑和超时时限 + (instancetype)requestWithURL:(NSURL

ios http网络请求

ios 7.0及之前版本使用NSURLConnection,7.0之后版本使用NSURLSession,本文给出两个组件的get和post方法

飞在江湖的专栏 654

智能解决装箱问题:使用优化算法实现高效包装

装箱问题(Bin Packing Problem)是组合优化领域中的一个经典问题,主要涉及如何将一系列对象高效地装入有限数量的容器(或“箱”)中,同时满足特定的约束条件。这个问题的目标是最小化所需使用的箱子数量或者最大化箱子的装载效率,以减少空间或资源的浪费。

MindOpt_003的博客 5545

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 947

ios-http详解

HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解不应只局限于此。千里之行,始于足下。越想走的远,基本原理就应该了解的透彻全面一些,仅仅停留在使用ASIHttpRequest或者AFNetWorking传个参数发个请求的程度上是不够的。这篇文章就是带你全方面回顾一下HTTP。 通过本文你能收获哪些内容: 完整HTTP请求与响应包含的必

qq_27909209的博客 1154

HTTP请求:iOS网络功能——从iOS应用中发出HTTP请求

高层iOS HTTP API iOS有3个主要的方法可以执行HTTP请求和接收响应:同步、队列式异步、异步。 所有请求类型共用的对象 所有的URL加载请求方法会共用几个对象:NSURL、NSURLRequest、NSURLConnection、NSURLResponse。 1、NSURL 可以指向文件资源,也可以指向网络资源。 NSURL *url = [NSURL URLWithString:mysteryString]; NSData *data = [NSData dataWithCon

run_in_road的博客 1609

强化学习实战:如何用PPO算法训练一个超级马里奥AI(附完整代码)

本文提供了一份详细的强化学习实战指南,教你如何使用PPO算法训练一个能玩《超级马里奥》的AI智能体。内容涵盖从环境搭建、自定义奖励函数设计到PPO智能体的PyTorch完整实现,并附有可运行的代码,帮助开发者快速上手游戏AI开发。

h6j7k8l9p0的博客 946

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 378

iOS http网络请求相关知识总结

本文旨在概述http协议头中的重要参数的意义,以及iOS上传文件时的多表单格式

luozhiwei_iOS的博客 1406

飞行器坐标转换

本文定义的是右手直角坐标系,x−y−zx-y-zx−y−z轴分别为北-天-东。从AAA坐标系到BBB坐标系是分别绕y−z−xy-z-xy−z−x轴,即天-东-北旋转ψ−θ−γψ−θ−γ。如果AAA是惯性系,BBB是机体系,则这三个角度分别为偏航角、俯仰角、横滚角。图1 惯性系到机体系。

gongfuyd的博客 1355

ios xcode http请求转换为https请求

由于苹果规定2017年1月1日以后,所有APP都要使用HTTPS进行网络请求,否则无法上架。因此研究了一下在iOS中使用HTTPS请求的实现。主要功能就是将传输的报文进行加密,提高安全性。 1、证书准备 证书分为两种,一种是花钱向认证的机构购买的证书,服务端如果使用的是这类证书的话,那一般客户端不需要做什么,用HTTPS进行请求就行了,苹果内置了那些受信任的根证书的。另一种是自

ygh5123687的博客 6065

PVE虚拟机运行不流畅,出现卡顿。

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 3062

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

iOS HTTP请求——同步请求、队列式异步请求、异步请求

在iOS应用与HTTP服务器进行HTTP通信时,有3个主要的方法可以执行HTTP请求并接收响应。 同步请求——该方法为阻塞式,直到整个响应加载完毕并返回调用方法为止。异步请求——该请求运行在起始线程中,不过在请求处理时会调用委托方法。队列式异步——将请求放到一个队列中以在后台线程中执行。 上述3类请求共用4类对象:NSURL、NSURLRequest、NSURLConnecti

chy305chy的专栏 3000

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ios http请求

在项目中我封装了个http请求的工具类,因为项目中只用到post请求,所以get请求的方法只是刚开始试了下,行得通,不知到有没有错误,代码如下: h文件: [cpp] #import     /*  *自定义http代理  */  @protocol MyhttpUitlDelegate   -(void) setServicereturnData:(NSString*)serv

kaven_lv的专栏 828

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OMGHTTPURLRQ:iOS开发者的HTTP请求利器

OMGHTTPURLRQ:iOS开发者的HTTP请求利器 项目介绍 在iOS开发中,处理HTTP请求是每个开发者都会遇到的问题。然而,Apple提供的NSURLRequest在某些方面显得有些简陋,尤其是在处理复杂的请求类型时。为了填补这一空白,OMGHTTPURLRQ应运而生。这是一个为NSURLRequest提供关键扩展的开源项目,旨在简化HTTP请求的构建过程,特别是对于multipart/...

gitblog_00206的博客 476

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【视频】iOS开发允许http请求

APP开发中有时会对接一些比较老的项目,老的项目还有一些在使用http的。iOS应用默认情况下不允许请求http,怎么能让其允许呢? 修改Info.plist配置文件 新增下面条目 Key Type Value Allow Arbitrary Loads Boolean YES 源码形式如下: 下面两行是关键部分 <key>Allow Arbitrary Loads</key> <true/> 结构如下: <?xml version="1.0

lxyoucan的博客 3661

iOS上的http请求:get、post以及同步、异步

网上有个公开的天气接口:天气 ,点进其中的getSupportCityDataset接口,用这个接口为例写一下iOS上的HTTP请求的写法。 这里面提供了get、post请求的格式要求。        1、get: NSString * URLString = @"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/getSup

u014131398的专栏 2047
上一篇: nonce和timestamp在Http安全协议中的作用
Jackson-Huang
博客等级 码龄14年 26粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值