#php #http #http-post
#php #http #http-post
Вопрос:
Я хочу отправить данные в PHP API, который считывает данные следующим образом:
$id = $_POST['id'];
$data = $_POST['data'];
$name = $data['name'];
$foo = $data['sub']['foo'];
для отправки идентификатора запрос будет выглядеть как id= 123
но я не уверен, как должен быть закодирован параметр данных — это просто кодировка URL id=123amp;data['name']=name
-адреса -> id=123amp;data['name']=name
и аналогично для более глубокого вложенного массива?
(Я выполняю запрос с Android, но меня интересует тело запроса POST)
Комментарии:
1. Я имею в виду эту функцию: php.net/manual/en/reserved.variables.post.php#87650
2. Вы пытаетесь отправить
$_POST
данные через URL?3. @MarkM конечно, нет, я просто пишу текст сообщения
Ответ №1:
Да, вы определенно можете это сделать, убедившись, что параметр кодируется правильно
Например, если вы закодируете следующее
ser[name]=Bob Smithamp;user[age]=47amp;user[sex]=Mamp;
user[dob]=5/12/1956amp;pastimes[0]=golfamp;pastimes[1]=operaamp;
pastimes[2]=pokeramp;pastimes[3]=rapamp;children[bobby][age]=12amp;
children[bobby][sex]=Mamp;children[sally][age]=8amp;
children[sally][sex]=Famp;flags_0=CEO
Перейдите на этот сайт и вставьте либо свой код, либо код, который я предоставил
http://meyerweb.com/eric/tools/dencoder / затем нажмите кнопку закодировать
и передайте его вашему URL в качестве параметров.
Если вам нужно сгенерировать их с помощью PHP, возможно, вам стоит взглянуть на это http://php.net/manual/en/function.http-build-query.php
Комментарии:
1. итак, хитрость может заключаться в том, чтобы не использовать кавычки в индексах для массива —
children[bobby][age] vs children['bobby']['age']
?2. Точно. даже если вам нужен ключ с пробелами, вы можете сделать что-то вроде ser[my name]=Bob Smith, что приведет к ser[my name]=Bob Smith
3. да, именно так, даже комментарий в документации PHP был правильным, я, должно быть, неправильно его прочитал.
Ответ №2:
Просто используйте JSON. Вы отправляете JSON из своего приложения и выполняете простой json_decode на сервере.
Комментарии:
1. Я не могу изменить API, это сделано третьей стороной, поэтому я должен приспособить
Ответ №3:
В вашем случае, когда вы должны следовать API, используйте этот формат:
data[name]=Useramp;data[sub][foo]=Hithere
Источник: http://homakov.blogspot.de/2012/06/x-www-form-urlencoded-vs-json-pros-and.html?m=1