Как отправить параметр POST, который поступит в PHP в виде ассоциативного массива?

#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