php - 使用 Curl POST 请求 PHP
问题描述
我正在做一个 wordpress 项目,我必须修改我的主题,所以我可以向外部 API 请求 JSON。我一直在互联网上搜索如何做到这一点,很多人使用 CURL。
我必须做一个 POST 请求,但我不知道它是如何工作的或如何去做。到目前为止,我已经运行了这段代码:
$url='api.example.com/v1/property/search/';
$data_array = array(
$id_company => '123456',
$api_token => 'abcd_efgh_ijkl_mnop',
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_array);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'APIKEY: 111111111111111111111',
'Content-Type: application/json'
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
echo($result);
我不知道我应该把我的身份验证信息放在哪里,或者 curl 方法在 PHP 中是如何工作的。各位大佬能看看,帮我解决一下吗?
解决方案
有一些答案可以帮助你,比如这个。
然而,WordPress 实际上有内置函数来发出 GET 和 POST 请求(我相信这实际上回退到 cURL?)命名为wp_remote_get()
和wp_remote_post()
. 显然,在你的情况下,你会想要使用wp_remote_post()
.
$url = 'https://api.example.com/v1/property/search/';
$data_array = array(
'id_company' => 123456,
'api_token' => 'abcde_fgh'
);
$headers = array(
'APIKEY' => 1111111111,
'Content-Type' => 'application/json'
);
$response = wp_remote_post( $url, array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => $headers,
'body' => $data_array,
'cookies' => array()
)
);
if( is_wp_error( $response ) ){
$error_message = $response->get_error_message();
echo "Something went wrong: $error_message";
} else {
echo 'Success! Response:<pre>';
print_r( $response );
echo '</pre>';
}
推荐阅读
- mysql - 将列的聚合与同一表的另一列进行比较
- algorithm - 如何使用约束解决分配问题?
- json - Tornadofx REST 客户端
- zsh - 如何知道安装了哪个ZSH配置框架?
- python - 我什么时候可以在 PCA 之前或之后将我的数据集拆分为训练和验证集?
- angular - 总是调用 flatMap 中的第二个 API
- javascript - React setState 不像我预期的那样工作
- php - 通过 PHP 将图像从 Swift 上传到数据库
- php - 将非英文字符附加到 json 文件
- python - numpy 代码库中是否有 numpy-stubs 的替代品?