如何在cURL POST请求中使用数组

我想知道如何使此代码支持数组?目前,images数组似乎只发送第一个值。

这是我的代码:

<?php

//extract data from the post

extract($_POST);

//set POST variables

$url = 'http://api.example.com/api';

$fields = array(

'username' => "annonymous",

'api_key' => urlencode("1234"),

'images[]' => urlencode(base64_encode('image1')),

'images[]' => urlencode(base64_encode('image2'))

);

//url-ify the data for the POST

foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }

rtrim($fields_string, '&');

//open connection

$ch = curl_init();

//set the url, number of POST vars, POST data

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_POST, count($fields));

curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post

$result = curl_exec($ch);

echo $result;

//close connection

curl_close($ch);

?>

这就是在api上收到的

VAR: username = annonymous

VAR: api_key = 1234

VAR: images = Array

array(3) {

["username"]=> string(10) "annonymous"

["api_key"]=> string(4) "1234"

["images"]=> array(1) { // this should contain 2 strings :( what is happening?

[0]=> string(8) "aW1hZ2Uy"

}

}

中的第二个值发生了什么images[]

回答:

您只是错误地创建了数组。您可以使用http_build_query:

$fields = array(

'username' => "annonymous",

'api_key' => urlencode("1234"),

'images' => array(

urlencode(base64_encode('image1')),

urlencode(base64_encode('image2'))

)

);

$fields_string = http_build_query($fields);

因此,您可以使用的整个代码为:

<?php

//extract data from the post

extract($_POST);

//set POST variables

$url = 'http://api.example.com/api';

$fields = array(

'username' => "annonymous",

'api_key' => urlencode("1234"),

'images' => array(

urlencode(base64_encode('image1')),

urlencode(base64_encode('image2'))

)

);

//url-ify the data for the POST

$fields_string = http_build_query($fields);

//open connection

$ch = curl_init();

//set the url, number of POST vars, POST data

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_POST, 1);

curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post

$result = curl_exec($ch);

echo $result;

//close connection

curl_close($ch);

?>

以上是 如何在cURL POST请求中使用数组 的全部内容, 来源链接: utcz.com/qa/434226.html

回到顶部