美文网首页
iOS AFN 通过body传参数给后台进行请求

iOS AFN 通过body传参数给后台进行请求

作者: iOS开发小学生 | 来源:发表于2023-08-10 11:21 被阅读0次

今天记录一下afn 请求参数要以body的方式传递给后台。下面是核心代码:

-(void)requestBody{
        //参数
        NSDictionary *params = @{@"key1":@"value1",@"key2":@"value2"};
        //参数转data
        NSData *dataBody = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
        //初始化请求 request
        NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:url parameters:nil error:nil];
        request.timeoutInterval = 60.f;
        //设置请求头格式
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        //设置请求体 body
        [request setHTTPBody:dataBody];
        //初始化请求管理 manager
        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
        AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
        responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/javascript", @"text/plain", @"application/javascript", nil];
        manager.responseSerializer = responseSerializer;
        //开始请求 resume(启动请求---很重要的一步,否则请求不启动)
        [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) {
            
        } downloadProgress:^(NSProgress * _Nonnull downloadProgress) {
            
        } completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
            if (!error) {
                NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];  //解析
                NSLog(@"%@",jsonData);
            } else {
                NSLog(@":%@",error);
            }
        }] resume];
    }
    
    
    /**
     *  NSDictionary-->NSString(json形式的)
     */
    - (NSString*)convertToJSONData:(id)infoDict
    {
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:infoDict
                                                           options:NSJSONWritingPrettyPrinted
                                                             error:&error];
        NSString *jsonString = @"";
        if (!jsonData){
            NSLog(@"Got an error: %@", error);
        }else{
            jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
        
        jsonString = [jsonString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];  //去除掉首尾的空白字符和换行字符
        jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
        jsonString = [jsonString stringByReplacingOccurrencesOfString:@" " withString:@""];// 去掉空格
        //jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\" withString:@""];// 去掉斜杠
        return jsonString;
}

相关文章

  • iOS 中的PUT请求

    今天一朋友问我用AFN封装的工具类使用PUT方式请求后台一直收不到参数,不传参的PUT请求都成功了,唯独这个传参的...

  • iOS 通过AFN 请求后台 Body的格式为formData相

    -(void)setFormData:(NSDictionary *)formData withRequest:(...

  • iOS 打印后台error信息

    在afn请求数据时,后台往往把请求错误信息放到HTTP响应Body中,我们打印出来的error往往是后台服务器错误...

  • Postman使用

    post请求在body那里传递参数给接口image.png

  • AFNetworking的小坑

    坑1 传参数给后台时候记得根据参数类型设置请求格式!!!!!! //设置返回格式 //manager.respon...

  • weex中GET请求的注意事项

    在weex中进行GET请求时,就算body传空,如下方式,在安卓上面可以请求成功,但是iOS上面一直请求失败,会报...

  • Request Body Search 与 DSL

    Request Body Search Query DSL 一些查询的高阶用法 只能通过body 传参 分页 排序...

  • iOS Url特殊符号编码问题

    原文参考:iOS Url特殊符号编码问题 当时传输参数给后台,后台总是解析失败。错误信息: 可以看到就是因为,请求...

  • iOS网络请求传入数组

    iOS网络请求传入数组 之前做项目的时候,后台要求传入数组,用AFN传入字典,代码入下:

  • iOS网络请求传入数组

    iOS网络请求传入数组 之前做项目的时候,后台要求传入数组,用AFN传入字典,代码入下:

网友评论

      本文标题:iOS AFN 通过body传参数给后台进行请求

      本文链接:https://www.haomeiwen.com/subject/ftfzpdtx.html