Objective c 如何在JSON中传递字典,目标c

Objective c 如何在JSON中传递字典,目标c,objective-c,json,post,get,Objective C,Json,Post,Get,我必须将字典(hostListItemDict)传递给服务器 BASE_URL : http:/123.com/PHP/ API_GET_FILE_NAME : server.php 主文件 -(void)toSendValuesToServer { [MiddlewareServerUtilityData SendDatasToServer:hostListItemDict ServerBaseUrl:BASE_URL andCompletion:^(NSError *error, id d

我必须将字典(hostListItemDict)传递给服务器

BASE_URL : http:/123.com/PHP/
API_GET_FILE_NAME : server.php
主文件

-(void)toSendValuesToServer
{
[MiddlewareServerUtilityData SendDatasToServer:hostListItemDict ServerBaseUrl:BASE_URL andCompletion:^(NSError *error, id data) {  
    if (!error) 
   {
        //NSLog(@"Data%@",data);
        NSString *resourseType = [data objectForKey:@"success_msg"];
        NSString *mess = [data objectForKey:@"msg"];
        if ([resourseType.lowercaseString isEqualToString:@"success_msg"]) 
        {
            NSLog(@"Transaction uploaded successfully, with message %@",mess);
        }
        else
        {
            NSLog(@"###Error sending transaction,data = %@",data);

        } 
    }
    else
     { 
        NSLog(@"#error uploading data %@",error.localizedDescription);
    } 
}];   

 }
 typedef void (^GFWebServiceHandler)(NSError *error, id data);

 @interface MiddlewareServerUtilityData : NSObject

 +(void)SendDatasToServer:(NSDictionary *)hostListItemDict ServerBaseUrl:(NSString *)BaseUrl andCompletion:(GFWebServiceHandler)completion;
Server.h文件

-(void)toSendValuesToServer
{
[MiddlewareServerUtilityData SendDatasToServer:hostListItemDict ServerBaseUrl:BASE_URL andCompletion:^(NSError *error, id data) {  
    if (!error) 
   {
        //NSLog(@"Data%@",data);
        NSString *resourseType = [data objectForKey:@"success_msg"];
        NSString *mess = [data objectForKey:@"msg"];
        if ([resourseType.lowercaseString isEqualToString:@"success_msg"]) 
        {
            NSLog(@"Transaction uploaded successfully, with message %@",mess);
        }
        else
        {
            NSLog(@"###Error sending transaction,data = %@",data);

        } 
    }
    else
     { 
        NSLog(@"#error uploading data %@",error.localizedDescription);
    } 
}];   

 }
 typedef void (^GFWebServiceHandler)(NSError *error, id data);

 @interface MiddlewareServerUtilityData : NSObject

 +(void)SendDatasToServer:(NSDictionary *)hostListItemDict ServerBaseUrl:(NSString *)BaseUrl andCompletion:(GFWebServiceHandler)completion;
Server.m

 #import "MiddlewareServerUtilityData.h"

 @implementation MiddlewareServerUtilityData

 +(void)SendDatasToServer:(NSDictionary *)hostListItemDict ServerBaseUrl:(NSString *)BaseUrl andCompletion:(GFWebServiceHandler)completion


 {
  NSString *strUrl = [NSString stringWithFormat:@"%@/%@",BaseUrl,API_GET_FILE_NAME];

  [self createGETRequestWithParams:hostListItemDict urlString:strUrl andCompletion:completion];    

   }

   +(AFHTTPRequestOperationManager *)createPOSTRequestWithParams:(NSDictionary *)hostListItemDict  urlString:(NSString *)url_str andCompletion:(GFWebServiceHandler)completion
    {

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializer];

    responseSerializer.removesKeysWithNullValues = YES;
manager.responseSerializer = responseSerializer;
    responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];

     NSString *strEncodedUrl = [url_str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[manager POST:strEncodedUrl parameters:hostListItemDict  success:^(AFHTTPRequestOperation *operation, id responseObject) {
    completion(nil,responseObject);


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    completion(error,nil);
}];

return manager;
 }

  +(AFHTTPRequestOperationManager *)createGETRequestWithParams:(NSDictionary *)hostListItemDict  urlString:(NSString *)url_str andCompletion:(GFWebServiceHandler)completion
   {

///strUrl = BASE_URL;
NSString *strUrlWithParams = [self stringByAppendingParams:hostListItemDict  toUrlString:url_str];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializer];
responseSerializer.removesKeysWithNullValues = YES;
manager.responseSerializer = responseSerializer;
//manager.responseSerializer = [AFHTTPResponseSerializer serializer];

responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
NSString *strEncodedUrl = [strUrlWithParams stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

[manager GET:strEncodedUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    completion(nil,responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    completion(error,nil);
}];

return manager;
 }

+(NSString *)stringByAppendingParams:(NSDictionary *)hostListItemDict  toUrlString:(NSString *)url_str
 {
   if (url_str.length > 0) {

    NSMutableString *strUrlWithParams = [NSMutableString stringWithString:url_str];
    if (hostListItemDict .count > 0) {
        ///Append ? for first param
        [strUrlWithParams appendString:@"?"];

        for (id paramName in [hostListItemDict  allKeys]) {

            ///Get value associated to param name
            id paramVal = [hostListItemDict  objectForKey:paramName];

            ///Append Param
            [strUrlWithParams appendFormat:@"%@=%@&",paramName,paramVal];
        }

        ///Remove & from last
        NSRange lastCharRange = NSMakeRange(strUrlWithParams.length - 1, 1);
        [strUrlWithParams deleteCharactersInRange:lastCharRange];
    }

    return strUrlWithParams;
}

return nil;
 }
上载数据时出错无法读取数据,因为它的格式不正确


[manager GET:url\u str parameters:hostListItemDict success:…
不起作用?此外,还可以将requestSerializer设置为JSON。是的,它不起作用