Objective c 如何在JSON中传递字典,目标c
我必须将字典(hostListItemDict)传递给服务器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
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。是的,它不起作用