http:get&post方法

在http请求中有两个非常重要的header,分别是get和post。对于百度这类的服务器访问,不需要传递什么参数,方便快捷迅速的访问,大多用的是get。而需要输入账号密码或者传递信息(图片等)的时候,采用的则是post请求。

(一)get:

    get请求可以被缓存。get请求时输入的数据是会显示在“网址”上的,通常?后面键值的方式追加参数,多个参数由&连接。并且参数一般不会有中文,如果有中文,则需要进行添加百分号转义。str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];在http协议中,没有明确的规定get的长度。不过根据浏览器不同,一般都在2-8k之间。


- (void)get{
    
    NSString *str = @"http://127.0.0.1/login.php?username=zhangsan&password=zhang";
    
    str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
    NSURL *url = [NSURL URLWithString:str];
    
    
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:10.0];
    
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        
        NSLog(@"%@",dict);
        
    }];
    
}

(二)post:

    post多为向服务器发送一些重要数据,效率不如get,并且无法被缓存。例如提交加密后的账号密码或者一些其他数据。提交数据的大小依照服务器的规则。post的参数是单独由一个请求体包裹着。发送到服务器后服务器根据请求体来选择传递的数据(请求体是二进制数据)。


- (void)post{
    
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php"];
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:10.0];
    request.HTTPMethod = @"post";
    request.HTTPBody = [@"username=zhangsan&password=zhang" dataUsingEncoding:NSUTF8StringEncoding];
    
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        
        NSLog(@"%@",dict);
        
    }];
    
}

(三)百度进行一次请求:

粘贴地址后发现是这样的

https://www.baidu.com/s?wd=%E6%88%91%E7%9A%84%20%E4%B8%96%E7%95%8C

这是因为get方法自己是ASC的,对中文进行转义了。其中20%就是一个特殊的空格转义字符。

然后监视下这一次百度的请求:



在响应头中

这个tyoe就是遵守的编码和一些规则。

在请求头中


user-agent显示着当前接收的设备,编号。如果改成手机端,那么百度则显示的是m百度的手机样式。


(四)服务器发送post请求




可以看到解析是json,编码是utf-8


并且此时还有一个请求体:



在json中还能看到解析结果:(json对应的键值对)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值