用 AFNetworking 通过 POST 方式发送数据

用 AFNetworking 通过 POST 方式发送数据
BY 子非鱼 · 2014 年 5 月 26 日

AFNetworking进行POST请求中 发送json数据有些特别 。
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<AFMultipartFormData> 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"];

时间: 2024-07-29 08:08:20

用 AFNetworking 通过 POST 方式发送数据的相关文章

C#带cookie Post和Get方式发送数据,保持cookie

在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie,在C#中可以使用CookieContainer 对象来保存登录后的Cookie信息,这样,在每次发送数据的时候,附加上Cookie信息,就可以了. #region 同步通过POST方式发送数据 /// <summary> /// 通过POST方式发送数据 /// </summary> /// <param name="Url&qu

UDP学习3(通过键盘录入方式发送数据demo)

1 import java.net.*; 2 import java.io.*; 3 class UDPSDemo 4 { 5 public static void main(String[]args) throws Exception 6 { 7 //创建发送端socket服务 8 DatagramSocket ds=new DatagramSocket(); 9 //准备发送的数据包 10 BufferedReader br=new BufferedReader(new InputStrea

在WebClient中使用post[发送数据]

很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法. 下面先说说WebClient 最主要的功能.     WebClient 构造函数 .Ctor 包括 一个空构造函数 和一个静态构造函数, 静态构造函数主要为UrlEncode 和UrlEncodeAndWirte 编码提供参照byte[]数据的初始化作用. stati WebClient()

Java使用UDP发送数据到InfluxDB

最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据. InfluxDB特征: 无结构(无模式):可以是任意数量的列(tags). 可以设置metric的保存时间. 支持与时间有关的相

使用post()方法以POST方式从服务器发送数据

使用post()方法以POST方式从服务器发送数据 与get()方法相比,post()方法多用于以POST方式向服务器发送数据,服务器接收到数据之后,进行处理,并将处理结果返回页面,调用格式如下: $.post(url,[data],[callback]) 参数url为服务器请求地址,可选项data为向服务器请求时发送的数据,可选项callback参数为请求成功后执行的回调函数. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti

Android发送数据到web服务器4种方式

/** * Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDat

HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request-response protocol(请求-回复协议)工作. GET - 从指定的服务器中获取数据 POST - 提交数据给指定的服务器处理 GET方法: 使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器: /test/demo_form.jsp?name1=value1

iOS网络开发基础--向服务器发送数据的方式

可以通过三种方式向服务器发送数据:NSURLRequest,NSMutableURLRequest,NSURLConnection 一.NSURLRequest向服务器发送同步或异步请求 举例:如何发送一个GET请求 * 默认就是GET请求 // 1.URL NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; // 2.请求 NSURLRequest *request = [NSURLRequest requestWi

Android开发使用GET方式向服务器请求和发送数据

#1.首先先用新建个servlet处理登陆请求 代码如下.只实现了doGet方法 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe