zoukankan      html  css  js  c++  java
  • iOS 原生HTTP POST请求上传图片

    今天项目里做一个上传图片等个人信息的时候,使用了第三方AFNetworking

    - (AFHTTPRequestOperation *)POST:(NSString *)URLString

                          parameters:(id)parameters

           constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block

                             success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success

                             failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;

    但是一直都没有回调,服务器那边也接收不到请求,不知道怎么回事,于是写了一个原生的请求,有空再研究AF

     

    - (void)postWithUrl:(NSString *)url params:(NSDictionary *)params imageData:(NSData *)imageData imageKeyword:(NSString *)imageKeywork fileName:(NSString *)fileName block:(void (^)(id responsObject, NSError *error))block

    {

        self.myBlock = block;

        

        //创建可变请求

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];

        

        //设置请求超时时间

        [request setTimeoutInterval:60.0];

        

        //创建HTTP body的字符串

        NSMutableString *bodyString = [NSMutableString string];

        

        //遍历所有字段

        for (NSString *key in params) {

            

            //添加分界线、换行符

            [bodyString appendFormat:@"--%@ ",BOUNDARY];

            

            //添加字段名称、换2

            [bodyString appendFormat:@"Content-Disposition: form-data; name="%@" ",key];

            

            //添加字段的值、换行符

            [bodyString appendFormat:@"%@ ",[params objectForKey:key]];

        }

        

        //添加分界线、换行符

        [bodyString appendFormat:@"--%@ ", BOUNDARY];

        

        //声明图片字段(imageKeyword为图片字段名,fileName为图片名)

        [bodyString appendFormat:@"Content-Disposition: form-data; name="%@"; filename="%@.png" ",imageKeywork,fileName];

        

        //声明上传文件的格式、换2

        [bodyString appendString:@"Content-Type: image/png "];

        

        //声明结束符

        NSString *endString = [NSString stringWithFormat:@" --%@-- ",BOUNDARY];

        

        //声明请求data,用来放入HTTP body

        NSMutableData *bodyData = [[NSMutableData alloc] init];

        

        //body字符串转化为UTF8格式的二进制 加入bodyData

        [bodyData appendData:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];

        

        //将图片的data 加入bodyData

        [bodyData appendData:imageData];

        

        //将结束符转化为UTF8格式的二进制 加入bodyData

        [bodyData appendData:[endString dataUsingEncoding:NSUTF8StringEncoding]];

        

        //设置HTTP Header Content-Type 的值

        [request addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",BOUNDARY] forHTTPHeaderField:@"Content-Type"];

        

        //设置HTTP Header Content-Length 的值

        [request addValue:[NSString stringWithFormat:@"%ld",[bodyData length]] forHTTPHeaderField:@"Content-Length"];

        

        //设置请求体

        [request setHTTPBody:bodyData];

        

        //设置请求方式(POSTGET

        [request setHTTPMethod:@"POST"];

        

        [NSURLConnection connectionWithRequest:request delegate:self];

    }

  • 相关阅读:
    【水题递归】【HDU2044】我大沙茶了
    【小知识+小细节】不断更新ing...
    【数学三角恒等变幻】【HDU2552】三足鼎立
    【set&&sstream||floyed判环算法】【UVa 11549】Calculator Conundrum
    【CCTYPE函数系列】
    【输入输出挂】【Uva11462】Age Sort
    【树形贪心】【UVA1267】Network
    【贪心】【uva11520】 Fill the Square
    动态规划uva12563
    紫书ch9 uva12563
  • 原文地址:https://www.cnblogs.com/hcsaaron/p/4435113.html
Copyright © 2011-2022 走看看