【发布时间】:2014-03-27 14:59:00
【问题描述】:
所以我试图通过 POST 将参数发送到 php 服务器,并且该参数值必须是 JSON 值。参数名称必须是“数据”
我的意思是,使用 get 方法类似于 http:url.com/url/something.php?data={"jsonkey1":1,"jsonkey2":[.... 或类似的东西
这是我现在拥有的代码,但我无法让它工作。我不喜欢使用外部库,而是使用本地方法。
// Writing JSON...
NSNumber *imagesCount = [[NSNumber alloc] initWithInt:0];
NSMutableArray *arrayList = [[NSMutableArray alloc] init]; // That's an empty array
//[arrayList addObject:@"image1.png"]; [arrayList addObject:@"image2.png"];
NSDictionary *dictionaryJSON = [NSDictionary dictionaryWithObjectsAndKeys:imagesCount, @"count",arrayList,@"list", nil];
NSString *param = @"data=";
NSMutableData *dataJSON = [[NSMutableData alloc]init];
[dataJSON appendData:[param dataUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryJSON options:NSJSONWritingPrettyPrinted error:&error];;
[dataJSON appendData:jsonData];
NSString* jsonString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@, %@", jsonString, error);
jsonString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// Request to server
NSString *url =[NSString stringWithFormat:@"http://url.com/ios/api/get_images_cache.php?"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:[NSString stringWithFormat:@"%i", [dataJSON length]] forHTTPHeaderField:@"Content-Length"];
NSString* jsonStringdat = [[NSString alloc] initWithBytes:[dataJSON bytes] length:[dataJSON length] encoding:NSUTF8StringEncoding];
jsonStringdat=[jsonStringdat stringByReplacingOccurrencesOfString:@" " withString:@""];
jsonStringdat=[jsonStringdat stringByReplacingOccurrencesOfString:@"\n" withString:@""];
NSLog(@"Final jsonData as string:\n%@, %@", jsonStringdat, error);
//[request setValue:jsonStringdat forHTTPHeaderField:@"data"];
//[request setValue:jsonData forKey:@"data"];
[request setHTTPBody: [jsonStringdat dataUsingEncoding:NSUTF8StringEncoding]];
感谢您的帮助。
编辑:
我终于做到了,问题出在这两行:
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
我删除了它们,终于让它工作了,谢谢!
【问题讨论】:
标签: php ios objective-c json