URLSession - Foundation _ Apple Developer Documentation
URL Loading System _ Apple Developer Documentation
iOS网络 NSURLSession 转载 - 点点滴滴 - 开源中国
ios - how to pass a dictionary using NSURLSession in post method_ - Stack Overflow
上传文件multipart form-data boundary 说明 - 我爱物联网 - 博客园
iOS里实现multipart_form-data格式上传文件 - 简书
【原】iOS通过http post上传图片 - BorisSun - ITeye博客
uploadTaskWithRequest_fromData_ - NSURLSession _ Apple Developer Documentation
uploadTaskWithRequest_fromFile_ - NSURLSession _ Apple Developer Documentation
NSURLErrorDomain是错误排查的说明
请求地址中极有可能存在中文,需要(ASCii/URL)转码
downloadURL = [downloadURL stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
上传文件
上传文件需要使用表单形式
格式为标准格式
content-type声明内容类型
key-value的定义:用以添加和区分所有的数据及类型
//分隔符
#define Boundary @"1a2b3c"
//一般换行
#define Wrap1 @"
"
//value赋值换行
#define Wrap2 @"
"
//开始分割
#define StartBoundary [NSString stringWithFormat:@"--%@%@",Boundary,Wrap1]
//文件分割完成
#define EndBody [NSString stringWithFormat:@"--%@--",Boundary]
包含分隔符的特殊声明
[requset setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",Boundary]
forHTTPHeaderField:@"Content-Type"];
| 参数名 |必选 |类型 | 说明
| -------- | ----- | ---- |
| uid |是 |string |用户id
| token |是 |string |token
| image |是 |file | 上传图片
image指代为服务器接收文件的key,即表单中的定义
filename通常情况是需要附加文件后缀以便服务端识别
定义key(文件)
NSString *body=[NSString stringWithFormat:@"%@Content-Disposition: form-data; name="**image**"; filename="%@";Content-Type:image/png%@",StartBoundary,@"filename",Wrap2];
换行定义value
------
定义key(参数)
NSString *disposition = [NSString stringWithFormat:@"%@Content-Disposition: form-data; name="%@"%@",StartBoundary,obj,Wrap2];
换行定义value
iOS 文件下载及断点续传 - GeekStar - 博客园
NSURLSession_NSURLConnection HTTP load failed on iOS 9 - Stack Overflow