【发布时间】:2013-11-22 11:35:08
【问题描述】:
您好想通过使用 AFNetworking 2.0 将一些数据(字符串和文件)发送到服务器。不知何故,POST请求的数据(对于forumlar)不正确,看起来请求上的编码/序列化丢失了。由于服务器无法处理我上传的数据。
如何设置请求的编码/序列化?
我假设必须设置 URL 表单参数编码。文档状态
[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters];
我试图这样做,但我不知道如何正确地做到这一点。使用以下 Xcode 通过警告:
manager.requestSerializer = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters];
/.../CameraViewController.m:105:31: 不兼容的指针类型从 'NSMutableURLRequest *' 分配给 'AFHTTPRequestSerializer *'
在我的源代码下面:
CameraViewController.h
#import <UIKit/UIKit.h>
@interface CameraViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
CameraViewControllerView.m
#import "CameraViewController.h"
#import "AFHTTPRequestOperationManager.h"
@interface CameraViewController ()
@property (nonatomic) int photoIsTaken;
@end
@implementation CameraViewController
// removed unecessary code for this question
- (void)upload {
NSLog(@"%s: uploader ", __FUNCTION__);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"latitude": @"8.444444",
@"longitude": @"50.44444",
@"location": @"New York",
@"type": @"2",
@"claim": @"NYC",
@"flag": @"0",
@"file": UIImageJPEGRepresentation(self.imageView.image,0.2)};
NSString *URLString = @"http://192.168.1.157/tapp/laravel/public/foobar/upload";
manager.requestSerializer = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters];
[manager POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@, %@", error, operation.responseString);
}];
[self dismissViewControllerAnimated:NO completion:nil];
}
@end
【问题讨论】:
-
你真的要发送嵌入在 url 中的整个图像吗?
-
我想通过 POST 请求发送图像,作为普通公式上传。该解决方案可以在 AFN 1.3 中轻松运行。所以我认为这是要走的路,但 AFN 2.0 的行为不同。会试试你的小费。文件不是总是作为 POST 请求中的参数发送吗?
-
图像应该进入正文。想一想,这就像您将一个潜在的 url >1MB 粘贴到您的浏览器 URL 栏中!
-
@ErikKerber mulitpart 为我解决了问题。对于文档,我添加了一个 anwser。
标签: ios objective-c post request afnetworking-2