AfNetworking 2.0 发布问题
Posted
技术标签:
【中文标题】AfNetworking 2.0 发布问题【英文标题】:AfNetworking 2.0 posting issue 【发布时间】:2014-10-16 18:16:27 【问题描述】:我最近想在我的 ios 应用程序中使用 Afnetworking。同一页面使用ASIHTTPREQUEST
回复我。但它根本不与 AFNetworking。这是我的努力。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @@"user[height]": @"10",
@"user[weight]": @"255";
[manager POST:@"http://localhost:8888/TestingPost/post.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
现在我尝试了许多选项,例如将序列化添加到不同的 xml/json/html。但没用。
在 PHP 页面上,我并没有做一些花哨的事情,只是打印出页面上发布的任何内容。它还在。
<?php
// Show all information, defaults to INFO_ALL
header('Content-type: application/JSON');
print_r($_POST[]);
/*
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$password = $_POST['password'];
*/
//echo( "hurray");
?>
你能解释一下吗?我想从 ASIhttprequest
切换到最新的和更多的支持。
这是请求的结果
Networking_example[1777:41979] Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo=0x7f9feae16d60 com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7f9fedb029a0> URL: http://localhost:8888/TestingPost/post.php status code: 500, headers
Connection = close;
"Content-Length" = 0;
"Content-Type" = "text/html";
Date = "Thu, 16 Oct 2014 18:08:08 GMT";
Server = Apache;
"X-Powered-By" = "PHP/5.5.10";
, NSErrorFailingURLKey=http://localhost:8888/TestingPost/post.php, com.alamofire.serialization.response.error.data=<>, NSLocalizedDescription=Request failed: internal server error (500)
【问题讨论】:
顺便说一句,您的 PHP a 指定了一个 JSON 标头(我认为应该是application/json
),但不返回 JSON。要么将其更改为返回 JSON,要么更改该标头(例如 application/text
)。
【参考方案1】:
如果您的 PHP 使用 $_POST
,这意味着您可以使用默认的 requestSerializer
或 AFHTTPRequestSerializer
(即 application/x-www-form-urlencoded
请求)。
但是您的 JSON 不是生成 JSON 响应,因此您必须将 responseSerializer
更改为 AFHTTPResponseSerializer
。
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
您的 PHP 页面报告了 500 错误。这是一个“内部服务器错误”,the status code definition 表示:
服务器遇到了一个意外情况,导致它无法完成请求。
这表明 PHP 错误。也许您打算:
print_r($_POST);
一般情况下,与Web服务交互时,最好生成JSON响应,例如
echo(json_encode($_POST));
显然,如果您生成 JSON 响应,您可能还想使用默认的 [AFJSONResponseSerializer serializer]
设置,而不是将其更改为 AFHTTPResponseSerializer
。
【讨论】:
但同一页面适用于 ASIhttpRequest。如果网页中有问题,它也不应该在该库上工作。我会试试这个并相应地更新 顺便说一句,您可以使用 Charles 观察您的 ASI 请求,然后使用 AFNetworking 重复此操作。通过这种方式,您将能够确定两个请求的不同之处。以上是关于AfNetworking 2.0 发布问题的主要内容,如果未能解决你的问题,请参考以下文章