我有一个 Symfony2 服务器,它使用以下命令从 JQuery 接收 HTTP POST:
var myJSON = {key1: "value1", key2: ["value2", "value3"]};
$.post(myURL, {myJSON}, function(json){}, "json");
这很完美,并且在内部将 json 转换为 Request 对象,一旦在 Controller 中,我可以直接使用$this->getRequest()->get('key1')
或get('key2')
获得一些格式良好的 PHP 对象,而无需额外的工作。
所以我有一个完整的应用程序,其中 JQuery 和 Symfony2 以这种方式工作。
现在我需要使用 iPhone SDK 和 Objective C 开发一个移动客户端。
但是我发现的所有示例都发送 JSON 并使用 json_decode 在服务器中将其转换为 PHP 对象一次。这些示例使用这段代码:
NSArray *myArray = [NSArray arrayWithObjects: @"Value2", @"Value3", nil];
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys: @"Value1", @"key1", myArray, @"Value2"];
NSData* requestData = [NSJSONSerialization dataWithJSONObject:myDict options:NSJSONWritingPrettyPrinted error:&error];
NSLog(@"JSON string:%@", [[NSString alloc] initWithData:requestData encoding:NSUTF8StringEncoding]); // To check that the conversion to JSON is indeed being performed perfectly!!
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"XMLHttpRequest" forHTTPHeaderField:@"X-Requested-With"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
这会将 JSON 数据直接发送到服务器并$this->getRequest()->get('key1')
返回 null。这种方法期望在 HTTP 请求的内容正文中接收该 JSON,并执行 PHPjson_decode
来管理数据。
好的,我可以让它修改我的“API”来检查即将到来的数据类型以及json_decoding
它是 JSON 还是getRequest
URLEncode 的东西。
但是在做这种解决方法之前,是否有一种简单的方法可以进行JQuery
并行转换,获取链接NSDictionaries
并发NSArrays
送到URLEncoded
服务器,application/x-www-form-urlencoded
以便始终以getRequest()->get('key1')
样式获取服务器中的数据?