AFNetworking作爲一個網絡交互的三方庫,它的功能非常豐富,除了我們常用的數據請求外,我們在網絡上傳的時候也需要注意一下,因爲上傳的時候如果不是字符串,那麼其他的所有東西都需要轉化成NSData數據進行上傳,下面介紹一下代碼。
和取數據差不多的
首先定義一個字典,用來存放參數
NSDictionary* params = [NSDictionary dictionary];
params[@"屬性"] = 值;
上傳字段數據:
**
//創建請求管理類
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
//發送請求
[mgr POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//成功回調
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//失敗回調
}];**
上傳文件數據(事先將文件轉化爲二進制data):
//創建請求管理類
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
//發送請求
[mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> totalformData) {
[totalformData appendPartWithFileData:formData.data name:formData.name fileName:formData.fileName mimeType:formData.mimeType];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//成功回調
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//失敗回調
} ];
我們除了要主要上傳之外,有些時候還要在請求中的header加入參數,這時候也可以用AFNetworking進行實現。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
1.首先是創建manager.requestSerializer = [AFJSONRquestSerializer serializer];
2.設置參數
value key
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
設置長度
|
[manager.requestSerializer setValue:[NSString stringWithFormat:@"%ld", (unsigned long)[jsonStr length]] forHTTPHeaderField:@"Content-Length"];
|
設置請求編碼類型
[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];
本文有因爲問題請聯繫
QQ:563699115
Telephone:18341266547