POST 上传数据
在开发中我们很多情况下需要用到上传数据,比如传用户的基本信息 姓名、性别、账户名、密码这类的我们拼接某种格式的字符串,还有上传多张图片、本地文件.
这样根据需要选择不同的表单form格式. 今天说一下最近用到的 本地多文件压缩上传
主要借鉴了 大大 a15950711997的博客 点击打开链接
POST 的 各种设置
1.创建POST请求
NSURL* url = [NSURL URLWithString:[[netUrl stringByAppendingString: @"/api/data/AddRemote_Data"]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL: url];
2.设置请求的form格式
这里要注意HTTP设置. 例如Content-Type 设置Content-Type是告诉服务器你上传的数据格式,如果不设置默认是application/x-www-form-urlencoded 其他还有multipart/form-data , application/json , text/xml 等等.
NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
//设置HTTPHeader
[request setValue:content forHTTPHeaderField:@"Content-Type"];
上传数据要告诉服务器你是如何分割数据的内容,不然服务器无法判断上传数据的有效性.一般多数第三方都会把这个做好, 这里看一下实现.创建一个分界符将不同的数据隔开,服务器就能根据分界符分割数据
//分界线 --AaB03x
NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
//结束符 AaB03x--
NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
这里表单中得很多数据拼接在一起都需要分界符把他们隔开
+ (NSMutableString*)setParamsKey:(NSString*)key value:(NSString*)value body:(NSMutableString*)body{
NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
//分界线 --AaB03x
NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
//添加分界线,换行
[body a