AFNetworking POST传递字符串(非JSON字符串)方法

需求

后台要求post方式调接口,参数只有一个字符串比如@"value"而非@{@"key":@"value"}。感觉总是有哪里和平时调接口不对,正常单独字符串参数(非json类型)的,都采取的是get方式,post一般传递的都是一个字典。后来找到方法,记录下来,以备后用,有同样疑惑的童鞋可以拿来用。

方法
/**
 *  异步POST请求:以body方式,支持数组
 *
 *  @param url     请求的url
 *  @param body    body数据(NSString 转为utf8编码的NSData就行)
 *  @param success 成功回调
 *  @param failure 失败回调
 */
- (void)PostWithUrlAndBody:(NSString *)url body:(NSData *)body success:(void(^)(NSDictionary *response))success failure:(void(^)(NSError *error))failure
{
    NSString *requestUrl = url;
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:requestUrl parameters:nil error:nil];
    request.timeoutInterval= 5.0;
    [request setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[[NSUserDefaults standardUserDefaults]valueForKey:@"cookie"] forHTTPHeaderField:@"Cookie"];
    // 设置body
    [request setHTTPBody:body];
    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
    responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
                                                 @"text/html",
                                                 @"text/json",
                                                 @"text/javascript",
                                                 @"text/plain",
                                                 nil];
    manager.responseSerializer = responseSerializer;
    [[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (!error) {
            success(responseObject);
        } else {
            failure(error);
        }
    }] resume];
}
调用
[self PostWithUrlAndBody:Nsite_ShareRevoke body:[[self.shareModel.dic objectForKey:@"id"] dataUsingEncoding:NSUTF8StringEncoding] success:^(NSDictionary *response) {
        } failure:^(NSError *error) {
        }];
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,918评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,302评论 3 119
  • 一 Block
    是否能够阅读 180评论 0 0
  • 自己就是一个罗辑思维很差的人,每次说话是有点前后颠倒,甚至有驴唇不对马嘴的感觉或是反应很慢,这是因为逻辑思维不在同...
    王朋彦阅读 329评论 0 0
  • 路上 行走着很多很多的人 很多 很多 黑夜来临的时候 他们 把身上那层厚厚的 且又透明的壳 剥落 在没有光的世界里...
    邓风来阅读 592评论 1 8

友情链接更多精彩内容