cURL GET 请求忽略我的数据输入
cURL GET request ignoring my data input
我正在尝试使用 PHP 和 cURL 获取有关 Cloudflare 防火墙中特定 IP 的信息。
但是下面的请求总是returns所有防火墙中设置的IP。
是否无法将 CURLOPT_POSTFIELDS 用于 GET 请求?
如何使用 PHP 和 cURL 正确构建 GET 请求,该请求具有包含要请求的数据的数组?
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $this->settings['cloudflare_rules_url'] );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_VERBOSE, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
$headers = [
'X-Auth-Email: ' . $this->settings['x_auth_email'],
'X-Auth-Key: ' . $this->settings['x_auth_key'],
'Content-Type: application/json',
];
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
$search_filter = array(
'configuration_target' => 'ip',
'configuration_value' => '123.123.123.123',
);
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $search_filter ) );
$result = curl_exec( $ch );
curl_close( $ch );
error_log( print_r( json_decode( $result, true ), true ) );
我找到了答案,但我不确定这是否是最优雅的方式。
解决方案是 url 将查询数组参数编码为 CURLOPT_URL。
$search_filter = array(
'configuration_target' => 'ip',
'configuration_value' => '123.123.123.123',
);
curl_setopt( $ch, CURLOPT_URL, $this->settings['cloudflare_rules_url'] . '/?' . http_build_query( $search_filter ));
我正在尝试使用 PHP 和 cURL 获取有关 Cloudflare 防火墙中特定 IP 的信息。
但是下面的请求总是returns所有防火墙中设置的IP。
是否无法将 CURLOPT_POSTFIELDS 用于 GET 请求?
如何使用 PHP 和 cURL 正确构建 GET 请求,该请求具有包含要请求的数据的数组?
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $this->settings['cloudflare_rules_url'] );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_VERBOSE, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
$headers = [
'X-Auth-Email: ' . $this->settings['x_auth_email'],
'X-Auth-Key: ' . $this->settings['x_auth_key'],
'Content-Type: application/json',
];
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
$search_filter = array(
'configuration_target' => 'ip',
'configuration_value' => '123.123.123.123',
);
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $search_filter ) );
$result = curl_exec( $ch );
curl_close( $ch );
error_log( print_r( json_decode( $result, true ), true ) );
我找到了答案,但我不确定这是否是最优雅的方式。
解决方案是 url 将查询数组参数编码为 CURLOPT_URL。
$search_filter = array(
'configuration_target' => 'ip',
'configuration_value' => '123.123.123.123',
);
curl_setopt( $ch, CURLOPT_URL, $this->settings['cloudflare_rules_url'] . '/?' . http_build_query( $search_filter ));