http:get&post方法

来源:互联网 发布:网站源码上传教程 编辑:程序博客网 时间:2024/06/05 00:44

在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 0