如何在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` (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |