用 AFNetworking 通过 POST 方式发送数据

简介: <p style="margin-top:0px; margin-bottom:1.5em; padding-top:0px; padding-bottom:0px; font-size:16px; direction:ltr; font-family:Helvetica,sans-serif; line-height:25px; vertical-align:baseline; word

AFNetworking 版本为 2.0.2


POST 发送数据有两种形式:
1、发送纯文本的内容
2、发送的 body 部分带有文件(图片,音频或者其他二进制数据)

对应的 Content-Type 有两种:
1、application/x-www-form-urlencoded
2、multipart/form-data

传统的使用 POST 的方式发送数据用于上传文件,AFNetworking 中提供了直接的接口:

[self.manager POST:post_url parameters:params
constructingBodyWithBlock:^(id&lt;AFMultipartFormData&gt; formData) {
    // 直接以 key value 的形式向 formData 中追加二进制数据
    [formData appendPartWithFormData:[str dataUsingEncoding:NSUTF8StringEncoding] 
              name:@"key1"];
    [formData appendPartWithFileData:imgData name:@"imagefile" 
              fileName:@"img.jpg" mimeType:@"image/jpeg"];
    }
success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // 成功后的处理
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // 失败后的处理
}];

使用 POST 方式发送纯文本内容:

- (NSMutableURLRequest *)postRequestWithURL:(NSString *)url content:(NSString *)text
{
    NSMutableURLRequest *request =
        [[NSMutableURLRequest alloc] initWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/x-www-form-urlencoded" 
             forHTTPHeaderField:@"Contsetent-Type"];
    [request setHTTPBody:1];

    return request;
}

NSOperation *operation =
[self.manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // 成功后的处理
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // 失败后的处理
}];
[self.manager.operationQueue addOperation:operation];

其中 self.manager 为 AFHTTPRequestOperationManager 实例。

_manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];

// 对于网站成功返回 JSON 格式的数据但是却在 failure 回调中显示的,
// 是因为服务器返回数据的网页中 content type 没有设置为 text/json
// 对于我们公司的服务器返回的 content type 为 text/html 所以我设置为如下这样,
// 对于不同的情况可以根据自己的情况设置合适的接受的 content type 的类型
_manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
目录
相关文章
|
机器学习/深度学习 监控 算法
yolov5无人机视频检测与计数系统(创新点和代码)
yolov5无人机视频检测与计数系统(创新点和代码)
|
CDN
Cocoapods报错 [!] CDN: trunk URL couldn't be downloaded: 解决方法
Cocoapods报错 [!] CDN: trunk URL couldn't be downloaded: 解决方法
1895 0
|
2月前
|
存储 JSON 监控
淘宝/天猫:通过商品详情API实现多店铺商品信息批量同步,确保价格、库存实时更新
在电商运营中,管理多个淘宝或天猫店铺的商品信息(如价格、库存)耗时易错。本文介绍如何通过淘宝/天猫开放平台的商品详情API,实现自动化批量同步,确保信息实时更新。内容涵盖API调用、多店铺数据处理、实时更新策略及注意事项,助您高效管理多店铺商品信息。
158 0
|
消息中间件 监控 API
构建微服务架构:从理论到实践的全面指南
本文将深入探讨微服务架构的设计原则、实施步骤和面临的挑战。与传统的单体架构相比,微服务通过其独立性、可伸缩性和灵活性,为现代应用开发提供了新的视角。文章将介绍如何从零开始规划和部署一个微服务系统,包括选择合适的技术栈、处理数据一致性问题以及实现服务间通信。此外,我们还将讨论在迁移至微服务架构过程中可能遇到的技术和组织挑战,以及如何克服这些难题以实现顺利过渡。
|
域名解析 网络协议 调度
阿里云移动研发平台EMAS支持纯血鸿蒙HarmonyOS NEXT
阿里云移动研发平台EMAS作为面向应用全生命周期提供一站式的应用研发管理服务产品,其核心产品包括云构建,HTTPDNS 和移动推送正式推出了针对纯血鸿蒙的SDK版本,将为广大开发者在鸿蒙生态中构建高效、稳定、可靠的企业级应用提供强有力的支持。如有疑问,请进入钉钉群(群号35248489)进行相关咨询。
|
弹性计算 缓存 网络安全
云服务器 ECS产品使用问题之远程桌面无法连接到Windows实例,该如何排查
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
【Stable Diffusion应用案例系列】【1】一键抠图--rembg插件安装与使用
【Stable Diffusion应用案例系列】【1】一键抠图--rembg插件安装与使用
【Stable Diffusion应用案例系列】【1】一键抠图--rembg插件安装与使用
|
监控 测试技术
【亮剑】理解CPU负载对服务器稳定性的重要性,并提供了诊断和解决CPU负载过高问题的步骤
【4月更文挑战第30天】本文阐述了理解CPU负载对服务器稳定性的重要性,并提供了诊断和解决CPU负载过高问题的步骤:1) 使用监控工具分析CPU使用率和系统负载;2) 深入排查运行队列、进程占用、系统调用和硬件状态;3) 根据排查结果进行代码优化、调整进程优先级或限制CPU使用率,必要时升级硬件。建议建立监控体系,定期性能测试,并持续优化以保证服务器高效运行。
609 1
NSNumber、NSString之间的相互转换
NSNumber、NSString之间的相互转换
330 0

热门文章

最新文章