GET请求和POST请求
一、创建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.发送请求
二、创建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.发送请求
三、比较
建议:提交用户的隐私数据一定要使用POST请求
相对POST请求而言,GET请求的所有参数都直接暴露在URL中,请求的URL一般会记录在服务器的访问日志中,而服务器的访问日志是黑客攻击的重点对象之一
注意:URL里面不能包含中文,在拼接参数中如果有中文存在,则转化后的URL为nil,所以需要对URL作如下处理:
NSString *urlStr= @"张三'"; NSURL *url = [NSURL URLWithString:urlStr]; // 此时的url为nil NSString *newURLStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; NSURL *newURL = [NSURL URLWithString:newURLStr]; //此时的newURL有值 NSURLRequest *request = [NSURLRequest requestWithURL:newURL]; /* @interface NSCharacterSet (NSURLUtilities) + (NSCharacterSet *)URLUserAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); + (NSCharacterSet *)URLPasswordAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); + (NSCharacterSet *)URLHostAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); + (NSCharacterSet *)URLPathAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); + (NSCharacterSet *)URLQueryAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); + (NSCharacterSet *)URLFragmentAllowedCharacterSet NS_AVAILABLE(10_9, 7_0); */
四、数据加密
摘自文顶顶微博,具体见 http://www.cnblogs.com/wendingding/p/3813723.html 文顶顶微博