Intereting Posts
«Usort» Doctrine \ Common \ Collections \ ArrayCollection? используя mysql_close () как объединить две захваченные переменные, используя preg_match_all? Таблица Sql импортирует только первый столбец Сеансы PHP – вопросы по блокировке и совместному использованию PHP, передать параметры из командной строки в скрипт PHP Визуальный редактор не работает в wordpress 3.8.1? Создание CSV-файла из таблицы MySQL с использованием php Вставьте разные значения в массив в MySQL в тех же столбцах с помощью всего одной вставки Mysql Codeigniter Active Record – как мне сделать запрос where_in и вернуть правильный порядок результатов? Идентификация / сопоставление и переписывание имен пространства имен PHP PHP получить url со специальными символами без urlencode: их! что такое уведомление: идентификатор ресурса № 9? bind-адрес отсутствует в файле my.cnf – Laravel отправлять запрос приложения, но не отправляться пользователю?

cURL PHP RESTful service всегда возвращает FALSE

У меня возникают некоторые трудности с POSTing объекта json API, который использует REST. Я новичок в использовании cURL, но я искал все, чтобы попытаться найти ответ на мою проблему, но придумал короткий. Мой запрос cURL всегда возвращает false. Я знаю, что это даже не сообщение моего объекта json, потому что я все равно получаю ответ от url. Мой код ниже.

<?php //API KEY = APIUsername //API_CODE = APIPassword $API_Key = "some API key"; $API_Code = "some API code"; $API_email = "email@email.com"; $API_password = "ohhello"; $url = "http://someURL.com/rest.svc/blah"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); header('Content-type: application/json'); $authData = "{\"APIUsername\":\"$API_Key\",\"APIPassword\":\"$API_Code\",\"EmailAddress\":\"$API_email\",\"Password\":\"$API_password\"}"; curl_setopt($ch, CURLOPT_POSTFIELDS, $authData); //make the request $result = curl_exec($ch); $response = json_encode($result); echo $response; curl_close() ?> 

$ Response возвращает только «false»,

Есть предположения?

    $response скорее всего false, потому что curl_exec() возвращает false (т. е. сбой) в $result . curl_error($ch) (после вызова curl_exec), чтобы увидеть ошибку cURL, если это проблема.

    С другой стороны, я думаю, что ваш CURLOPT_POSTFIELDS находится в недопустимом формате. Вы не передаете строку JSON.

    Этот параметр может быть передан как строка с urlencoded, например 'para1 = val1 & para2 = val2 & …', или как массив с именем поля в качестве ключа и данными поля в качестве значения.

    – PHP-документы для curl_setopt ()


    Обновить

    Быстрый способ избежать ошибки SSL – добавить эту опцию:

     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    Вы получаете ошибку проверки SSL, потому что cURL, в отличие от браузеров, не имеет предварительно загруженного списка доверенных центров сертификации (CA), поэтому сертификатам SSL по умолчанию не доверяют. Быстрое решение – просто принять сертификаты без проверки, используя приведенную выше строку. Лучшее решение – это вручную добавить только сертификаты или CA (ы), которые вы хотите принять. См. Эту статью о cURL и SSL для получения дополнительной информации.