Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多个json数据发送到api_Php_Post_Php Curl - Fatal编程技术网

Php 将多个json数据发送到api

Php 将多个json数据发送到api,php,post,php-curl,Php,Post,Php Curl,我想将这三个数组数据发送到外部api。首先,我将其编码为JSON,但它总是发送最后一个数组 $params = array( array('receiverName' => 'sample_name', 'receiverEmail' => 'krishanuniyalas@gmail.com', 'senderEmail' => 'info@hotelpalacio.net', 'roomNumber' => '12456',

我想将这三个数组数据发送到外部api。首先,我将其编码为JSON,但它总是发送最后一个数组

$params = array(        array('receiverName' => 'sample_name',
    'receiverEmail' => 'krishanuniyalas@gmail.com',
    'senderEmail' => 'info@hotelpalacio.net',
    'roomNumber' => '12456',
    'accessToken' =>'ca5629d0-6810-11e8-9d40-d7194ac0ac8d'),array('receiverName' => 'sample_name',
    'receiverEmail' => 'karamuniyalas@gmail.com',
    'senderEmail' => 'info@hotelpalacio.net',
    'roomNumber' => '12456',
    'accessToken' =>'ca5629d0-6810-11e8-9d40-d7194ac0ac8d'),array('receiverName' => 'sample_name',
    'receiverEmail' => 'krishanuniyalas@gmail.com',
    'senderEmail' => 'info@hotelpalacio.net',
    'roomNumber' => '12456',
    'accessToken' =>'ca5629d0-6810-11e8-9d40-d7194ac0ac8d'));

$data_string = json_encode($params);

foreach($params as $pa) {
  $r=json_encode($pa);
}

curl_setopt($ch, CURLOPT_POSTFIELDS, $r);

您只需创建一个简单的查询参数,如
$data=http\u build\u query($params)

然后将数据传递给您的
curl\u setopt($ch,CURLOPT\u POSTFIELDS,$data)

这是一个有效的例子

$data = [
    [
        'a' => 'bla',
    ],
    [
        'b' => 'blubb',
    ],
];

$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, "http://www.example.com/");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);

$result = [];
foreach ($data as $value) {
    $json = json_encode($value);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [                                                                         
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($json),                                                                       
    ]);
    $result[] = curl_exec($handle);
}
打开一个有效的curl资源,并根据需要设置相应的curl选项。您希望发送一个json字符串作为post请求。此外,您应该告诉另一方,您发送了json数据。比如说curl,你在等待一个响应,每次通过foreach循环时都会触发。就这些


如果您想一次发送整个数据,请省去foreach循环结束,对整个数据数组进行编码并发送。

编码时的输出是什么?当您发出此请求时,服务器得到了什么?您确定服务器可以像您希望的那样处理此请求吗?您只能发布一次数据。为什么不发送
$data\u string
?其余的代码在哪里?
curl\u setopt($ch,CURLOPT\u POSTFIELDS,$r)
all?设置获取响应的选项怎么样?发送数据并等待响应怎么样?foreach($jsondataas$data){$array[]=$data;}$z=$array;$yy=数组();foreach($z as$t){$data5=json_encode($t,true);curl_setopt($ch,CURLOPT_POSTFIELDS,$data5);curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept:application/json','Content-Type:application/json','cache-control:no-cache','accessToken casdfgsd810-11esdfg8-9d40-d7194ac0ac8d'))}$result=curl\u exec($ch);问题是$result=curl_exec($ch);。我在foreach循环之外使用它…否则一切都正常。。。JSON在哪里?它将以post请求的形式发布数据。。如果您想要发送json数据,那么只需要发送像curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string)这样的数据;唯一的问题是$result[]=curl_exec($handle);。。我在foreach循环之外使用它。否则一切都很好。但是再次感谢你