我正在一个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中如何工作。你们可以检查出来并帮助我解决这个问题吗?
答案 0 :(得分:1)
有一些可以帮助您的答案,例如this one。
但是,WordPress实际上具有内置功能来发出名为wp_remote_get()
和wp_remote_post()
的GET和POST请求(实际上是我相信的cURL?)。显然,您需要使用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>';
}