Отправка нескольких значений с одинаковым именем / ключом в HTTP cURL POST - PullRequest
0 голосов
/ 04 июля 2018

Недавно я столкнулся с проблемой, когда пытался передать несколько данных

.

Проблема:

API использует POST для отправки параметров Один из параметров предназначен для возможности принимать несколько значений с одним и тем же именем / ключом. В GET это можно представить так: / api? Name = James & name = Peter & name = Richard &… В этом примере мы отправляем 3 значения для «имени» (Джеймс, Питер и Ричард), и это совершенно правильно, поскольку API ожидает этого и будет обрабатывать значение так, как должно. Проблема сейчас заключается в POST. В PHP cURL параметр POST отправляется так:

 $data = array("name" => "James", "email" => "james@someone.com");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

Теперь мы все знаем в массиве, мы устанавливаем ключ только один раз. Таким образом, в этом случае нет способа отправить 3 разных значения для «имени». Итак, как нам посылать? Name = James & name = Peter & name = Richard POST, но не PHP на этот раз, а в формате HTTP curl?

Итак, как мне отправить несколько данных в HTTP-сообщении примерно так

 {
  "funcrr":"create_insert_new_delivery",
  "data":{
     "name":"James",
     "email":"james@someone.com",

//MORE OF LIKE AN ARRAY BUT IN HTTP FORM
       "product_name":"Pear",
       "product_weight":"30",
         "product_name":"Rice",
         "product_weight":"60",
          "product_name":"Yoghury",
           "product_weight":"100",
   }
}

1 Ответ

0 голосов
/ 04 июля 2018

Это единственный способ создать запрос с дублированными именованными ключами ...

// Data Source
$data = array(
  array('name'=>'james','email'=>'james@someone.com'),
  array('name'=>'john','email'=>'john@someone.com'),
  array('name'=>'joe','email'=>'joe@someone.com'),
);

// Request String Building
$postFields = implode( '&', array_map( 'http_build_query', $data ) );

// curl assignment
curl_setopt( $ch, CURLOPT_POSTFIELDS, $postFields );

Это производит ...

имя = Джеймс и электронная почта = Джеймсе% 40someone.com & имя = джон и электронная почта = джон% 40someone.com & имя = джо и электронная почта = джо% 40someone.com

http_build_query() применяется к каждой «строке» данных, которая затем объединяется с & через implode()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...