无法使用 AFNetworking 将阵列发布到服务器

Posted

技术标签:

【中文标题】无法使用 AFNetworking 将阵列发布到服务器【英文标题】:Failed to post an array to server using AFNetworking 【发布时间】:2016-02-26 05:03:15 【问题描述】:

我使用 AFNetworking 将包含设备中联系人详细信息的数组发布到服务器。下面是我的代码。

NSDictionary *parameters = @@"UserContacts": contactsArray;//contactsArray is NSMutableArray
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

[manager POST:baseUrl parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) 
    NSLog(@"RESPONSE : %@",responseObject);

 failure:^(NSURLSessionDataTask *task, NSError *error)     
    NSLog(@"Error: %@", error.localizedDescription);

];

我得到的回复是

响应:“失败”通知:未定义索引:C:\xampp\htdocs\creator\php\controller\contactsync.php 中的 UserContacts 在线101

php代码如下

public function insertios()

    if(!isset($_REQUEST['UserContacts']))

        echo json_encode('failed');
        $contact = $_REQUEST['UserContacts'];
        echo $contact;

    else

        echo json_encode('Success');

    

请告诉我哪里出错了。

【问题讨论】:

【参考方案1】:

您应该使用 php://input 只读流来访问帖子数据,而不是像这样的 $_REQUEST

<?php 
    $postdata = file_get_contents('php://input');
?>

之后,您可以根据内容类型解码您的帖子数据。

您已经使用 NSDictionary 来绑定在 PHP 服务器上被视为 json 字符串的数据,因此您必须通过 php 输入流包装器读取请求数据。

【讨论】:

以上是关于无法使用 AFNetworking 将阵列发布到服务器的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AFNetworking 将 iOS 连接到 asp.net webservices

无法理解使用 AFNetworking 在服务器中发布数据的响应

无法在 Today Extension 上使用 AFNetworking

无法在 Today Extension 上使用 AFNetworking

无法在 iOS 应用程序中使用 AFNetworking

PHAsset + AFNetworking。无法在真机上上传文件到服务器