iOS开发网络篇—GET请求和POST请求的说明与比较
1、GET请求和POST请求简单说明
1.1 创建GET请求
// 1.设置请求路径
NSString *urlStr = [NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
NSURL *url = [NSURL URLWithString:urlStr];
// 2.创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 3.发送请求
- 服务器

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

2、比较
- 建议:提交用户的隐私数据一定要使用POST请求
- 相对POST请求而言,GET请求的所有参数都直接暴露在URL中,请求的URL一般会记录在服务器的访问日志中,而服务器的访问日志是黑客攻击的重点对象之一
- 用户的隐私数据如登录密码,银行账号等。
3、使用
- 通过请求头告诉服务器,客户端的类型(可以通过修改,欺骗服务器)
// 1.设置请求路径
NSURL *URL = [NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"]; // 不需要传递参数
// 2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; // 默认为get请求
request.timeoutInterval = 5.0; // 设置请求超时为5秒
request.HTTPMethod = @"POST"; // 设置请求方法
// 设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];
// 把拼接后的字符串转换为data,设置请求体
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
// 客户端类型,只能写英文
[request setValue:@"ios+android" forHTTPHeaderField:@"User-Agent"];
- 服务器:

- 加强对中文的处理
问题:URL不允许写中文
在GET请求中,相关代码段打断点以验证。
在字符串的拼接参数中,用户名使用“中文测试”.
转换成URL之后整个变成了空值。

提示:URL里面不能包含中文。
解决:进行转码
// 1.设置请求路径
NSString *urlStr = [NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
// 转码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr]; // 2.创建请求对象
NSURLRequest *request = [NSURLRequest requestWithURL:url];
- 调试查看

- 服务器

iOS开发网络篇—GET请求和POST请求的说明与比较的更多相关文章
- iOS开发网络篇—GET请求和POST请求
iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFo ...
- iOS开发网络篇—GET请求和POST请求(转)
一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http:/ ...
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession) - 转
说明: 1.该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2.本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. ...
- iOS开发中的Get请求和POST请求
//Get请求一般为不涉及到用户的账号密码的网络请求,其中Get请求是等请求内容回来之后,才可以进行下一步的操作 - (void)requestWithGet{ //Get请求: //1.设置请求路径 ...
- iOS开发网络篇—NSURLConnection基本使用
iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据 ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- iOS开发网络篇—数据缓存
iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
随机推荐
- YII 自带验证码实现
共三步,分别controllers,models,views各一层添置一行代码即可实现 第一步在controllers添加 public function actions() { return arr ...
- Mysql 性能分析 Explain
Mysql Query Optmize: 查询优化器, SQL语句会给Query Optimize他会执行他认为最优的方式.. Mysql 常见问题 CPU饱和,IO磁盘发生在装入数据大于内存时. E ...
- C#中遍历各类数据集合的方法总结
C#中遍历各类数据集合的方法总结: 1.枚举类型 //遍历枚举类型Sample的各个枚举名称 foreach (string sp in Enum.GetNames(typeof(Sample))) ...
- Git---时光穿梭机之版本回退02
现在你的本地仓库底下添加一个readme.txt文件 第一次readme.txt的内容如下:: Git is a version control systemGit is free sofwore 然 ...
- Unity XLua 官方案例学习
1. Helloworld using UnityEngine; using XLua; public class Helloworld : MonoBehaviour { // Use this f ...
- xdebug php
sudo apt-get install php5-dev php5-cli #其中php5-dev为了安装xdebug所以必须安装. sudo apt-get install php5-xsl #X ...
- Unpacking Argument Lists
[Unpacking Argument Lists] The reverse situation occurs when the arguments are already in a list or ...
- Linux C多线程实现生产者消费者
今天学习了用Linux C进行线程的同步,实现类似生产者消费者的问题.下面我就来分享我的代码 #include<stdio.h> #include<pthread.h> #in ...
- mybatis使用foreach进行批量插入和删除操作
一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...
- $_SERVER['PHP_AUTH_USER']
PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端 ...