最近,当我试图传递多个数据时,我遇到了一个问题
问题是:
API使用POST发送参数,其中一个参数设计为能够接受具有相同名称/键的多个值。在GET中,它可以表示如下: /api?name=James&name=Peter&name=Richard&…在本例中,我们为“name”(James、Peter和Richard)发送了3个值,这是完全有效的,因为API期望它并将按它应该处理的值进行处理。现在的问题在于邮政。在POST中,POST参数发送如下:
$data = array("name" => "James", "email" => "james@someone.com");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);现在我们都知道在一个数组中,我们只设置了一次键。因此,在这种情况下,无法为“name”发送3种不同的值。那么,我们应该如何通过POST发送?name=James&name=Peter&name=Richard,但这次不是通过PHP发送,而是以HTTP格式发送?
那么,如何在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",
}
}发布于 2018-07-04 02:23:20
这是我唯一能想到的用重复命名密钥构建请求的方法.
// 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 );这会产生..。
name=james&email=james%40someone.com&name=john&email=john%40someone.com&name=joe&email=joe%40someone.com
http_build_query()应用于每一行数据,然后通过implode()与&结合在一起。
https://stackoverflow.com/questions/51164837
复制相似问题