一、GET请求和POST请求简单说明

  GET - 从指定的服务器中获取数据
  POST - 提交数据给指定的服务器处理

  GET方法:
    使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:
    /test/demo_form.jsp?name1=value1&name2=value2
  特点:
  • GET请求能够被缓存
  • GET请求会保存在浏览器的浏览记录中,查询字符串会显示在地址栏的URL中,不安全,请不要使用GET请求提交敏感数据
  • 以GET请求的URL能够保存为浏览器书签
  • GET请求有长度限制
  • GET请求主要用以获取数据
  POST方法:
    使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:
    POST /test/demo_form.jsp HTTP/1.1
    Host: w3schools.com
    name1=value1&name2=value2  
  特点:
  • POST请求不能被缓存下来
  • POST请求因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以看POST求情比GET请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输,
  • 以POST请求的URL无法保存为浏览器书签
  • POST请求没有长度限制

  创建GET请求

1 //    1.设置请求路径
2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
3 NSURL *url=[NSURL URLWithString:urlStr];
4
5 // 2.创建请求对象
6 NSURLRequest *request=[NSURLRequest requestWithURL:url];
7
8 // 3.发送请求

  服务器:

      

  创建POST请求

 1     // 1.设置请求路径
2 NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要传递参数
3
4 // 2.创建请求对象
5 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求
6 request.timeoutInterval=5.0;//设置请求超时为5秒
7 request.HTTPMethod=@"POST";//设置请求方法
8
9 //设置请求体
10 NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];
11 //把拼接后的字符串转换为data,设置请求体
12 request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];
13
14 // 3.发送请求

  服务器:

    

二、比较

    建议:提交用户的隐私数据一定要使用POST请求

    相对POST请求而言,GET请求的所有参数都直接暴露在URL中,请求的URL一般会记录在服务器的访问日志中,而服务器的访问日志是黑客攻击的重点对象之一

    用户的隐私数据如登录密码,银行账号等。

三、使用

  1.通过请求头告诉服务器,客户端的类型(可以通过修改,欺骗服务器)

 1     // 1.设置请求路径
2 NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要传递参数
3
4 // 2.创建请求对象
5 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求
6 request.timeoutInterval=5.0;//设置请求超时为5秒
7 request.HTTPMethod=@"POST";//设置请求方法
8
9 //设置请求体
10 NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];
11 //把拼接后的字符串转换为data,设置请求体
12 request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];
13
14 //客户端类型,只能写英文
15 [request setValue:@"ios+android" forHTTPHeaderField:@"User-Agent"];

服务器:

    

2.加强对中文的处理

  问题:URL不允许写中文

    在GET请求中,相关代码段打断点以验证。

    在字符串的拼接参数中,用户名使用“文顶顶”.

    

    转换成URL之后整个变成了空值。

    

提示:URL里面不能包含中文。

解决:进行转码

1 //    1.设置请求路径
2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
3 //转码
4 urlStr= [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
5 NSURL *url=[NSURL URLWithString:urlStr];
6
7 // 2.创建请求对象
8 NSURLRequest *request=[NSURLRequest requestWithURL:url];

  调试查看:

    

  服务器:

    

 
 

二:网络--GET请求和POST请求的更多相关文章

  1. Ajax相关——get请求和post请求的区别

    一.完整的URL由以下几部分组成: scheme:通信协议,常用的有:http/ftp. host:主机,服务器(计算机)域名或IP地址 port:端口,整数,可选,省略时使用默认端口,http的默认 ...

  2. iOS开发网络篇—GET请求和POST请求

    iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...

  3. slave IO流程之二:注册slave请求和dump请求

    slave IO流程已经在http://www.cnblogs.com/onlyac/p/5815566.html中有介绍 这次我们要探索注册slave请求和dump请求的报文格式和主要流程. 一.注 ...

  4. iOS开发网络篇—GET请求和POST请求(转)

    一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http:/ ...

  5. Jmeter自动化测试 POST请求和GET请求用if控制器,可以二次开发源码,将请求方式通过数据源传入,就不需要做多余的判断

    Jmeter自动化测试 POST请求和GET请求用if控制器,可以二次开发源码,将请求方式通过数据源传入,就不需要做多余的判断 目前常用的做法:

  6. swift开发网络篇—利用NSURLConnection GET请求和POST请求

    一.GET请求和POST请求简单说明 @IBOutlet weakvar userName:UITextField! @IBOutletweakvar userPwd:UITextField! @IB ...

  7. iOS开发网络篇—GET请求和POST请求的说明与比较

    1.GET请求和POST请求简单说明 1.1 创建GET请求 // 1.设置请求路径 NSString *urlStr = [NSString stringWithFormat:@"http ...

  8. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  9. 前端ajax中运用post请求和get请求之于session验证

    首先我们来看下ajax两种请求的区别: Ajax中POST和GET的区别Get和Post都是向服务器发送的一种请求,只是发送机制不同. 1. GET请求会将参数跟在URL后进行传递,而POST请求则是 ...

随机推荐

  1. hdu1856 选出更多的孩子

    题目大意: 老师选取2个学生对应的号码,这两人视作朋友,同时朋友的朋友也可以看成自己的朋友. 最后老师选出一个人数最多的朋友圈. 这里学生的人数不大于10^7,所以操作时需要极为注意,操作步数能省则省 ...

  2. 任意两点间最短距离floyd-warshall ---- POJ 2139 Six Degrees of Cowvin Bacon

    floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) f ...

  3. SSH日志位置

    # Redhat or Fedora Core: /var/log/secure # Mandrake, FreeBSD or OpenBSD: /var/log/auth.log # SuSE: / ...

  4. 显示倒计时,为零时自动点击按钮提交【JavaScript实现】

    原文发布时间为:2008-10-17 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>显示倒计时,完毕提交</tit ...

  5. python学习之-- shutil模块

    shutil 模块功能:文件/文件夹的复制,压缩处理模块shutil.copyfileobj(fsrc,fdst[,length]):将文件内容拷贝到另一个文件中,也可以是部分内容举例:文件复制 im ...

  6. [Bzoj3233][Ahoi2013]找硬币[基础DP]

    3233: [Ahoi2013]找硬币 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 924  Solved: 482[Submit][Status][ ...

  7. Capture and report JavaScript errors with window.onerror

    原文:https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror.html onerror is a sp ...

  8. 转: java DES的算法片码

    转自: https://www.zhihu.com/question/36767829 作者:郭无心链接:https://www.zhihu.com/question/36767829/answer/ ...

  9. Angular2.x-服务

    heroes之旅HeroesComponent目前正在获取并显示虚假数据. 在本教程重构之后,HeroesComponent将会精益求精并专注于支持视图.用模拟服务进行单元测试也会更容易. 为什么服务 ...

  10. MySQL基础笔记(三) 复杂查询

    所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...