【发布时间】:2015-03-20 18:21:02
【问题描述】:
我有一种情况,我使用 AFNetworking 2.0 代码从我的 iOS 代码中发布一个 JSON 字符串。我的客户端代码如下所示:
NSURL *url = [NSURL URLWithString:BaseURLString];
NSString *jsonString = [[NSString alloc] initWithData:jsonPayloadForProject encoding:NSUTF8StringEncoding];
NSDictionary *parameters = @{@"project": jsonString};
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:@"service.php" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@", [responseObject description]);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"POST JSON for Project Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}];
JSON 看起来像这样:
{
"Maps" : [
{
"Markers" : [
{
"marker_tag" : -790386438,
"location_y" : 182,
"location_x" : 344
},
{
"marker_tag" : 451496476,
"location_y" : 267,
"location_x" : 150.5
}
],
"image_string" : "EC817509-DE49-4914-840E-5E407571F6AE.jpeg",
"order_num" : 0,
"name" : "Blah1",
"id" : "EC817509-DE49-4914-840E-5E407571F6AE"
},
{
"Markers" : [
{
"marker_tag" : -79601351,
"location_y" : 377,
"location_x" : 486.5,
"image_id" : "Blah2",
"map_id" : "146C1C09-5AE0-4E4C-83C8-B7EAA8F28A9A"
}
],
"image_string" : "146C1C09-5AE0-4E4C-83C8-B7EAA8F28A9A.jpeg",
"order_num" : 0,
"name" : "1st floor",
"id" : "146C1C09-5AE0-4E4C-83C8-B7EAA8F28A9A"
}
],
"longitude" : "-222.222222",
"latitude" : "33.33333"
}
当我使用
在我的 php 代码中读取服务器上的 JSON 字符串时$json_str = file_get_contents('php://input');
当我这样做时,我得到以下字符串:
{ "project" = '{ \n \"Maps\" : [ \n { \n \"Markers\" : [ \n { \n \"marker_tag\n : = -790386438, \n ....
我的问题是,当我执行以下操作时,我什么也得不到。
$array_str = json_decode($json_str, true);
将其放入数组以解析数据的最佳方法是什么?如何取回我从客户端发送的原始 JSON 字符串?
【问题讨论】:
-
做一件事,var_dump($POST);exit;脚本的第一行,看看输出是什么或 echo 'POST Params'; var_dump($POST);回声'获取参数'; var_dump($GET);退出;
-
@FawadMasud 不,这不是
x-www-form-urlencoded请求。所以你不要使用$_POST和$_GET。 -
对于 [AFHTTPResponseSerializer 序列化器],如果我在我的服务器代码中编写: $json_str = json_encode($return_str);回声 $json_str;我收到错误:“不可接受的内容类型:文本/html。
标签: php ios objective-c json afnetworking-2