Недавно я хотел использовать 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)}
Если ваш 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
,
Других решений пока нет …