Проблема публикации AfNetworking 2.0

Недавно я хотел использовать Afnetworking в моем приложении IOS. та же страница отвечает мне, используя 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)}

3

Решение

Если ваш PHP использует $_POST, это означает, что вы в порядке, используя по умолчанию requestSerializer из AFHTTPRequestSerializer (т.е. application/x-www-form-urlencoded запрос).

Но ваш JSON не является генерацией ответа JSON, поэтому вы должны изменить responseSerializer в AFHTTPResponseSerializer,

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

А ваша страница PHP сообщает об ошибке 500. Это «Внутренняя ошибка сервера», для которой определение кода состояния говорит:

Сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос.

Это говорит об ошибке PHP. Возможно, вы намеревались:

print_r($_POST);

Обычно при взаимодействии с веб-службой лучше генерировать ответ JSON, например,

echo(json_encode($_POST));

Очевидно, что если вы генерируете JSON-ответ, вы также можете использовать значение по умолчанию [AFJSONResponseSerializer serializer] установка, а не изменение его на AFHTTPResponseSerializer,

0

Другие решения

Других решений пока нет …