如何在PHP中为CoinBase API创建地址接口声明CURL请求体
在PHP中用cURL调用CoinBase API创建地址
我明白你已经搞定了简单的无数据API调用,现在要把那个能正常运行的CLI curl请求转成PHP版对吧?其实核心就是正确处理JSON请求体和设置对应的cURL选项,我给你写个完整的示例,再拆解一下关键部分:
首先,先看完整的代码实现:
<?php // 配置参数 $apiUrl = 'https://api.coinbase.com/v2/accounts/82de7fcd-db72-5085-8ceb-bee19303080b/addresses'; $bearerToken = 'abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c'; $requestBody = [ 'name' => 'New receive address' ]; // 把请求体数组转成JSON字符串(这一步很关键) $jsonRequestBody = json_encode($requestBody); // 初始化cURL会话 $ch = curl_init($apiUrl); // 设置cURL选项 curl_setopt($ch, CURLOPT_POST, true); // 传递JSON格式的请求体,对应CLI里的-d参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonRequestBody); // 设置请求头,必须包含Content-Type和Authorization curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', "Authorization: Bearer {$bearerToken}" ]); // 让curl_exec返回响应内容而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 如果你需要跳过SSL验证(仅测试环境用,生产环境不要开) // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 执行请求并获取响应 $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 检查请求是否成功 if ($response === false) { echo 'cURL Error: ' . curl_error($ch); } else { echo "HTTP状态码: {$httpCode}\n"; echo "API响应: {$response}\n"; // 可以把响应转成数组方便处理 $responseData = json_decode($response, true); } // 关闭cURL会话 curl_close($ch); ?>
关键细节说明:
- 请求体处理:CLI里的
-d '{"name": "New receive address"}'对应PHP里的CURLOPT_POSTFIELDS,但这里必须传递JSON字符串,不能直接传数组。如果传数组,cURL会自动把请求格式改成multipart/form-data,而CoinBase API要求的是application/json,所以一定要用json_encode()把数组转成JSON字符串。 - 请求头设置:必须显式设置
Content-Type: application/json,否则API可能无法正确解析你的请求体;Authorization头要带上Bearer令牌,格式和CLI里完全一致。 - 响应处理:开启
CURLOPT_RETURNTRANSFER后,curl_exec()会返回API的响应内容,你可以用json_decode()把它转成关联数组,方便后续处理业务逻辑。
如果测试的时候遇到SSL相关的错误,比如本地环境没有正确的SSL证书,可以临时开启CURLOPT_SSL_VERIFYPEER为false,但生产环境绝对不能这么做,建议配置正确的CA证书路径来解决。
内容的提问来源于stack exchange,提问作者SMJ
相关产品推荐
相关产品推荐

