Я работаю над проектом WordPress, где мне нужно изменить свою тему, поэтому я могу запросить JSON для внешнего API. Я искал в Интернете, как это сделать, и многие люди используют 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. Можете ли вы, ребята, проверить это и помочь мне решить эту проблему?
Это ваш настоящий код? вы никогда не закрываете массив после этой строки curl_setopt($curl, CURLOPT_HTTPHEADER, array(






Есть несколько ответов, которые могут вам помочь, например Вот этот.
Тем не менее, 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>';
}
Спасибо за ответ. Я просто заменил код, который у меня есть, на тот, который вы мне только что дали. Я получил {"status":"error"} от сервера. Я хочу знать, куда мне передать идентификатор и токен, которые мне дает API? и как я должен структурировать эту информацию для аутентификации?
Приложение, которому вы отправляете данные, будет иметь особенности того, как они хотят получить данные. Обычно это пара key => value в теле или заголовках, но она может сильно отличаться в зависимости от службы, в которую вы отправляете данные.
Спасибо за оба ответа, очень помогли мне =)
curl — это реликвия php, и его очень сложно использовать. Я предлагаю использовать docs.guzzlephp.org, которая поставляется как библиотека композитора (если у вас есть опыт работы с этим). Однако сам вопрос на самом деле не имеет для меня смысла, например, как тема WordPress связана с выполнением запроса POST в php?