@ASiD

Как переделать CURL запрос под PHP?

Здравствуйте. Пытаюсь воспользоваться стандартизацией от сервиса DaData. Возможно что-то не так понял, но их библиотека, кажется, требует несколько сторонних, что нежелательно. Есть возможность передать запрос с помощью CURL. Из командной строки запрос работает, после перевода в PHP - не хочет. Подскажите, что не так?

Оригинал (работает):
curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Token 123" \
    -H "X-Secret: 123" \
    -d '[ "тел 7165219 доб139" ]' \
    https://dadata.ru/api/v2/clean/phone


После переделки в PHP (возвращает {"detail":"Учетные данные не были предоставлены."}1):
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch, CURLOPT_HEADER, "Content-Type: application/json");
curl_setopt($ch, CURLOPT_HEADER, "Authorization: Token 123");
curl_setopt($ch, CURLOPT_HEADER, "X-Secret: 123");
curl_setopt($ch, CURLOPT_POSTFIELDS, '[ "тел 7165219 доб139" ]');
curl_setopt($ch, CURLOPT_URL, "https://dadata.ru/api/v2/clean/phone");
$result = curl_exec($ch);  
curl_close($ch);
echo $result;
  • Вопрос задан
  • 1005 просмотров
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
Добрый день.

Да, ваш код надо бы поправить:
$post  = array('key' => 'value'); // укажите данные для отправки через POST
$headers = array('Content-Type: application/json', 'Authorization: Token 123', 'X-Secret: 123');

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // отправка заголовков
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // POST-данные
curl_setopt($ch, CURLOPT_URL, 'https://dadata.ru/api/v2/clean/phone');
$result = curl_exec($ch);  
curl_close($ch);
echo $result;


Не стесняйтесь адаптировать код под свои конкретные нужды. Я просто указал вектор.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

но вообще используй www.telerik.com/fiddler
Ответ написан
Комментировать
@nalgeon
Если не умеете или не хотите работать с composer: пример вызова «Дадаты» из PHP одним файлом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 15:31
70000 руб./за проект
25 апр. 2024, в 15:26
15000 руб./за проект
25 апр. 2024, в 15:13
3000 руб./за проект