博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之NSMutableURLRequest
阅读量:5868 次
发布时间:2019-06-19

本文共 2463 字,大约阅读时间需要 8 分钟。

hot3.png

以下对NSMutableURLRequest的一个小例子:
#import "BJViewController.h"@implementation FKViewControllerNSMutableData* totalData;- (void)viewDidLoad{	[super viewDidLoad];	NSString* str = @"http://192.168.1.88:8888/abc/login.jsp";	totalData = [[NSMutableData alloc] init];	// 以指定NSString创建NSURL对象	NSURL* url = [NSURL URLWithString:str];	// 创建NSURLRequest对象	//	NSURLRequest* request = [NSURLRequest requestWithURL:url];	// 通过这种方式创建的NSURLRequest可以指定缓存策略、超时时长	NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url		cachePolicy:NSURLRequestReloadIgnoringLocalCacheData		timeoutInterval:5];	// ----------------下面代码开始设置请求参数----------------	// 准备请求参数	NSString* post = [NSString stringWithFormat:@"name=%@&pass=%@"		,@"crazyit.org" , @"疯狂软件"];	// 将请求参数转换为NSData	NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];	NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];	// 设置请求的方式,默认发送GET请求。		[request setHTTPMethod:@"POST"];	// 添加2个请求头	[request setValue:postLength forHTTPHeaderField:@"Content-Length"];	[request setValue:@"application/x-www-form-urlencoded"		forHTTPHeaderField:@"Content-Type"];	// 将请求数据设置为HTTP请求体	[request setHTTPBody:postData];	// 以指定URL、delegate创建连接、发送请求	NSURLConnection* conn = [NSURLConnection connectionWithRequest:request		delegate:self];	// 如果conn为nil,直接返回	if(conn != nil)	{		return;	}}// 当服务器系响应生成时激发该方法。-(void)connection:(NSURLConnection *)connection	didReceiveResponse:(NSURLResponse *)response{	NSLog(@"--didReceiveResponse--");	NSLog(@"响应的数据类型:%@" , response.MIMEType);	// 获取响应数据的长度,如果不能检测到长度,返回NSURLResponseUnknownLength(-1)	NSLog(@"响应的数据长度为:%lld"		  , response.expectedContentLength);	NSLog(@"响应的数据所使用的字符集:%@" , response.textEncodingName);	NSLog(@"响应的文件名:%@" , response.suggestedFilename);}// 每次读取服务器响应的数据时,都会激发该方法。// 对于一个请求而言,服务器数据可能要分几次才能读取,因此该方法将会被触发多次。// 如果程序需要将这些数据转换成字符串,建议使用NSMutableData来收集这些数据、然后整体转换-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData* )data{	[totalData appendData:data];}// 当连接服务器出现错误时激发该方法。可通过error获取错误信息-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{	NSLog(@"-error--");}// 当数据load完成时激发该方法,对于每次请求,该方法只会被激发一次。-(void)connectionDidFinishLoading:(NSURLConnection *)connection{	NSLog(@"--finishLoading--");	NSString* content = [[NSString alloc] initWithData:totalData		encoding:NSUTF8StringEncoding];	// 清空所有数据。	[totalData setLength:0];	self.showView.text = content;}@end

转载于:https://my.oschina.net/khakiloveyty/blog/396667

你可能感兴趣的文章
Eclipse中将Java项目转换成Web项目的方法
查看>>
Django 框架之 Models
查看>>
“将偷懒进行到极致!”——EasyCode.Net代码生成器图文评测
查看>>
React使用——webpack
查看>>
python web 服务器学习笔记(四)
查看>>
反射(五)之动态代理的作用
查看>>
操作系统性能优化分析及工具
查看>>
pymysql-connect阻塞
查看>>
用gulp建立自动工具,完成软件的编译、测试、打包和发布流程
查看>>
C# DataGridView 的UserDeletingRow事件,删除
查看>>
CSS3样式linear-gradient的使用
查看>>
传递函数笔记
查看>>
Java开发常用的几个注解
查看>>
丢包故障排除指南
查看>>
github
查看>>
mySQL使用
查看>>
拓扑排序
查看>>
[Todo]对于thrift和protobuf比较好的描述
查看>>
implement-stack-using-queues(easy,但也有思考价值)
查看>>
Linux下OpenSSL 安装图文详解
查看>>