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请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
随机推荐
- SQL Server数据库partition by 与ROW_NUMBER()函数使用详解[转]
关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTDB') is not null drop table TESTDB create table ...
- Android bitmap转byte
逆转start协议输出 private static byte[] bitmap2byte(Bitmap bmp) throws Exception{ return bitmap2byte(bmp, ...
- zk分布式锁-排它锁简单实现
package Lock; import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;import ...
- LDa 通俗理解
LDA理解以及源码分析(一) http://blog.csdn.net/pirage/article/details/50239125 LDA在主题建模中的应用,需要知道以下几点: 文档集中的word ...
- git的基础操作-入门
本文是根据廖雪峰的git教程写的笔记:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0 ...
- 对一个 复杂的json结果进行取值的例子
1 JSON结果集 [ { "J_LP_OPERATE_MAIN": { "ID": "1900036295", "FILL_MA ...
- vector中resize()和reserve()的区别
先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素 ...
- Swift与OC的相互调用
Swift经过四年的发展已经趋于成熟,是时候学一下了,感谢公司swift大佬的不吝赐教.心有所感记录一下,如有不足欢迎指正批评. 新建swift项目 新建Swift.OC类文件 可在新建OC文件时,建 ...
- 二叉树翻转 · binary tree flipping
[抄题]: 给定一个二叉树,其中所有右节点要么是具有兄弟节点的叶节点(有一个共享相同父节点的左节点)或空白,将其倒置并将其转换为树,其中原来的右节点变为左叶子节点.返回新的根节点. 您在真实的面试中是 ...
- [Jenkins]执行SoapUI脚本,怎样在邮件内容里面嵌入html
在Editable Email Notification的Default Content里面加入这样一段: ${FILE,path="result-output/overview-summa ...