加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在PHP CURL请求中保留Integer

发布时间:2020-12-13 17:01:15 所属栏目:PHP教程 来源:网络整理
导读:我正在使用API??,当我向他们发送POST请求时,他们会发出一个警告,即数组中的一个字段必须是Integer类型,而不是String类型. 我的CURL设置是这样的: $post_fields = array( 'data_source_uuid' = $uuid,'name' = 'TestPlan','interval_count' = 1,'interval_un
我正在使用API??,当我向他们发送POST请求时,他们会发出一个警告,即数组中的一个字段必须是Integer类型,而不是String类型.

我的CURL设置是这样的:

$post_fields = array(
            'data_source_uuid' => $uuid,'name' => 'TestPlan','interval_count' => 1,'interval_unit' => 'month','external_id' => 'Eur_fees'
        );
    $curl = curl_init();
    curl_setopt_array($curl,array(
        CURLOPT_RETURNTRANSFER => true,CURLOPT_URL => $url,CURLOPT_USERPWD => $api_key
        CURLOPT_POSTFIELDS =>  $post_fields,CURLOPT_HTTPHEADER => 'Content-Type: application/json'
    ));
    $result = curl_exec($curl);
    curl_close( $curl );

当我将它发送到我的localhost和var_dump上的另一个URL时,我得到了这个:

string(253) "array(5) {
          ["data_source_uuid"]=>
          string(39) "uuid"
          ["name"]=>
          string(8) "TestPlan"
          ["interval_count"]=>
          string(1) "1"
          ["interval_unit"]=>
          string(5) "month"
          ["external_id"]=>
          string(8) "Eur_fees"
        }"

这里的问题是interval_count是一个String而不是一个Integer.如果我在使用CURLOPT_POSTFIELDS之前使用var_dump它是一个整数,那么CURL部分中的某些内容正在改变它,但我不确定是什么.

该API适用于名为chartmogul.com的网站

解决方法

来自ChartMogul的Bill.您需要使用json_encode($data)对数据进行编码.另请确保您的数据源UUID,帐户密钥和帐户令牌正确无误.以下请求适用于我:

<?php 

// account variables
$ds_uuid = "DATA_SOURCE_UUID";
$token = 'API_TOKEN';
$password = 'SECRET_KEY';

// request url
$baseurl='https://api.chartmogul.com/v1/';
$url=$baseurl.'import/plans';

// data to be posted
$post_fields = array(
            'data_source_uuid' => "$ds_uuid",'name' => 'A plan','external_id' => 'eur_fees'
        );

// encode json data
$data = json_encode($post_fields);

// initialize cURL
$ch = curl_init();

// set options
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERPWD,"$token:$password");
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch,CURLOPT_POST,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
    'Content-Type: application/json','Content-Length: ' . strlen($data))
);

// make the request
$result = curl_exec($ch);

// decode the result
$json = json_decode($result,true);

// print the result
print $json;

curl_close($ch);
?>`enter code here`

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读