php请求带bool类型接口,PHP cURL发送bool POST变量

这篇博客介绍了在使用PHP的cURL库向CloudFlare API发送POST请求时遇到的问题。作者发现设置`proxied`字段为`true`导致了DNSValidationError。解决方案是将POST数据编码为JSON,并在HTTP头中添加'Content-Type: application/json',从而使API能正确解析`proxied`字段的布尔值。
摘要由CSDN通过智能技术生成

我正在使用

PHP curl脚本向CloudFlare API发送一些POST变量:

我的领域是:

$fields = array(

'type' => 'A',

'name' => $subdomain.rand(1, 2000),

'content' => Env::getCFIP(),

'proxied' => true,

'ttl' => 1

);

curl curl_setopt是:

array(

CURLOPT_POST => true,

CURLOPT_SSL_VERIFYPEER => false,

CURLOPT_POSTFIELDS => $fields,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_TIMEOUT => 3,

CURLOPT_VERBOSE => 0,

CURLOPT_FORBID_REUSE => true,

CURLOPT_HTTPHEADER => array(

'X-Auth-Email: '.Env::getCFEmail(),

'X-Auth-Key: '.Env::getCFAuthKey(),

)

);

默认值为’proxied’为false.如果我在数据字段中跳过它,脚本可以工作.但是,我希望它是真的,但我得到错误:

object(stdClass)[2]

public 'success' => boolean false

public 'errors' =>

array (size=1)

0 =>

object(stdClass)[8]

public 'code' => int 1004

public 'message' => string 'DNS Validation Error' (length=20)

public 'error_chain' =>

array (size=1)

0 =>

object(stdClass)[7]

public 'code' => int 9003

public 'message' => string 'Invalid 'proxied' value, must be a boolean' (length=42)

public 'messages' =>

array (size=0)

empty

public 'result' => null

所以我的猜测是,当cURL发送POST请求时,它会将数据变量转换为STRING.有没有办法阻止这种行为?

最佳答案 我设法通过以下方式解决这个问题:

>将字段编码为json:

CURLOPT_POSTFIELDS => json_encode($fields),

>在标题中添加’Content-Type:application / json’

CURLOPT_HTTPHEADER => array(

'X-Auth-Email: '.Env::getCFEmail(),

'X-Auth-Key: '.Env::getCFAuthKey(),

'Content-Type: application/json',

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值