iOS - 连接 PHP 页面时 AFNetworking 失败

Posted

技术标签:

【中文标题】iOS - 连接 PHP 页面时 AFNetworking 失败【英文标题】:iOS - AFNetworking failure while connecting PHP page 【发布时间】:2015-10-05 13:56:14 【问题描述】:

我在 Cloud9 中创建了一个在线 php 页面,我可以在其中连接到 mysql 数据库并做任何我想做的事情。我可以在不使用 AFNetworking 的情况下从我的 ios 应用程序模拟器连接该页面。但是,我应该使用这个库并创建一个 POST 请求。 我的 POST 请求失败并出现此错误:

Error : Error Domain=NSCocoaErrorDomain Code=3840 "操作 无法完成。 (Cocoa 错误 3840。)”(JSON 文本未开始 带有数组或对象以及允许未设置片段的选项。) NSDebugDescription=JSON 文本不是以数组或对象开头并且 允许未设置片段的选项。

我的 Objective-C 代码是:

NSString *url = [URLFactory targetURL];
NSDictionary *dictionary = @
                             @"key" : @"value",
                             ;

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager POST:url parameters:dictionary success:^(AFHTTPRequestOperation *operation, id responseObject)
 
     NSLog(@"Response : %@",responseObject);
  failure:^(AFHTTPRequestOperation *operation, NSError *error) 

     NSLog(@"Here!");

     NSLog(@"Error : %@",error);
 ];

还有 PHP:

<?php 
header('Content-type: application/json');
$isPostRequest = $_SERVER['REQUEST_METHOD'] == 'POST';

if ($isPostRequest) 

    echo json_encode("done!");

?>

如您所见,我还没有做任何事情。我会检查参数,但现在我只想要连接。我看到“这里!”记录并得到错误。我做错了什么还是缺少了什么?我发现了一些关于这个错误的帖子,但它们并没有出现故障。所以我很困惑。

谢谢!

【问题讨论】:

【参考方案1】:

尝试改变你的代码来创建一个像这样的数组:

echo json_encode(array("response" => "done!"));

然后在你的 iOS 代码中,获取响应对象:

NSArray *jsonObjects = [responseObject objectForKey:@"response"];

【讨论】:

非常感谢!我以为我的错误是关于 Objective-c,但您的解决方案有效:) 再次感谢您!

以上是关于iOS - 连接 PHP 页面时 AFNetworking 失败的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错

php 如何在页面刷新时不重复操作数据库?

PHP-----连接数据库

PHP页面编码问题

PHP openssl_public_encrypt 导致页面超时/连接重置?

在 Linux 上将 PHP 与 MS Access 2007-2010 连接