Json AFHTTPRequestOperationManager中的AFNetworking 2.0如何传递HTTPBody标记

Json AFHTTPRequestOperationManager中的AFNetworking 2.0如何传递HTTPBody标记,json,xcode,ios7,afnetworking-2,Json,Xcode,Ios7,Afnetworking 2,我使用的是AFNetworking 2.0,在这里我必须在主体部分传递json对象,如何在AFHTTPRequestOperationManager中传递HTTP主体 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *parameters = @{@"foo": @"bar"}; NSURL *filePath = [NSURL fileURLWithPa

我使用的是AFNetworking 2.0,在这里我必须在主体部分传递json对象,如何在AFHTTPRequestOperationManager中传递HTTP主体

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
AFHTTPRequestOperationManager*manager=[AFHTTPRequestOperationManager];
NSDictionary*参数=@{@“foo”:@“bar”};
NSURL*filePath=[NSURL fileURLWithPath:@”file://path/to/image.png"];
[经理职务:@”http://example.com/resources.json“参数:参数constructingBodyWithBlock:^(id formData){
[formData appendPartWithFileURL:filePath名称:@“image”错误:nil];
}成功:^(AFHTTPRequestOperation*操作,id响应对象){
NSLog(@“成功:%@”,响应对象);
}失败:^(AFHTTPRequestOperation*操作,NSError*错误){
NSLog(@“错误:%@”,错误);
}];

谢谢,

与您脱机聊天,听起来主要关心的是如何在单个请求中发送配置文件图像、名称、电子邮件地址、用户ID和密码。它可能看起来像:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSURL *filePath = ...
[manager POST:@"http://example.com/registration.json" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];
    [formData appendPartWithFormData:[name dataUsingEncoding:NSUTF8StringEncoding] name:@"name"];
    [formData appendPartWithFormData:[email dataUsingEncoding:NSUTF8StringEncoding] name:@"email"];
    [formData appendPartWithFormData:[userid dataUsingEncoding:NSUTF8StringEncoding] name:@"userid"];
    [formData appendPartWithFormData:[password dataUsingEncoding:NSUTF8StringEncoding] name:@"password"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

显然,这些是非常不同的方法,因此无论采用何种方法,都需要编写服务器代码来处理相同的API。

我建议
appendWithFormData:name:
。理论上,如果您觉得必须指定
内容类型
,您可以使用
appendPartWithHeaders:body:
,手动指定
内容配置
内容类型
标题,但是它看起来更麻烦,而且可能没有必要。我需要在上面的方法中添加此方法的位置?在
constructingBodyWithBlock
块中。就在您的
appendPartWithFileURL
之前或之后。我尝试过这样的[formData appendWithFormData-但是没有appendWithFormData方法,我需要传递HttpBody我想喜欢这个NSMutableURLRequest*请求=[[NSMutableURLRequest alloc]init];[request setHTTPBody:postBody];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSDictionary *parameters = @{
    @"name"     : name,
    @"email"    : email,
    @"userid"   : userid,
    @"password" : password,
    @"image"    : base64EncodedImage
};

[manager POST:@"http://example.com/registration.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];