coldfusion cfhttp на PHP

Я разработал веб-сайт, которым я управляю для спортивной команды, которую я тренирую в Wordpress (точнее, PHP). В течение последних нескольких лет мы использовали онлайн-сервис, который запускает программу на основе статистики в Coldfusion. Недавно они открыли канал, чтобы пользователи могли использовать собственные настроенные веб-сайты с реализованными в них данными.

Они предоставили мне такую ​​ленту (я не буду сообщать мои данные по соображениям безопасности):

<cfhttp url="http://datafeed" method="post" result="result">
            <cfhttpparam type="formfield" name="seasonID" value="29725">
            <cfhttpparam type="formfield" name="codekey" value="mycodekey">
<cfhttpparam type="formfield" name="showGameType" value="RS">
</cfhttp>

У меня нет опыта работы с Coldfusion, и я попытался кое-что прочитать об использовании этого в среде PHP, но все, что я стараюсь найти, - это PHP для Coldfusion, а не наоборот.

Из-за этого я пришел к стеку, я не совсем уверен, как это будет работать в PHP, но будет ли ответом cURL? В идеале я хотел бы просто создать пару функций wordpress и вызывать их на своих страницах шаблонов.


person Phrosty30    schedule 01.08.2012    source источник
comment
Отличный вопрос! Какую именно функциональность вы пытаетесь реализовать?   -  person Matt    schedule 01.08.2012
comment
Приведенный выше код выполняет HTTP-вызов (такой же, как curl или wget) с использованием POST и передачи параметров. datafeed - может быть blah.com/something.php - и Виала! вы получаете доступ к PHP из coldfusion :)   -  person Mark A Kruger    schedule 02.08.2012
comment
Мэтт, по сути, они предоставили мне список каналов, которые дают доступ к статистике, спискам, расписаниям и т. Д. Насколько я понимаю, все, что должно происходить, - это отображение указанных таблиц на моем веб-сайте. Я хочу по-прежнему иметь возможность читать статистику с сайта базы данных лиги (ColdFusion) и отображать ее на моем сайте Wordpress.   -  person Phrosty30    schedule 02.08.2012


Ответы (2)


Пример кода, который у вас есть, представляет собой простой http-пост в стиле формы, в котором ответ от поста записывается в переменную "result".

Сообщение формы содержит три поля; "Seasonid", "codekey" и "showgametype".

Честно говоря, я понятия не имею, как бы вы написали это на PHP, cURL - это библиотека, которую вам нужно будет использовать. Примеры в комментариях на главной странице cURL делают то, что вам нужно; захватить HTTP-ответ из сообщения или перейти по URL-адресу.

Надеюсь, мое описание того, что делает пример кода, поможет вам определить ваш курс.

person Stephen Moretti    schedule 01.08.2012
comment
Спасибо, Стивен, так как я очень незнаком с ColdFusion, если бы я отображал результаты, упомянутые выше, я бы сделал это с помощью # result.FileContent # правильно? Это отобразит вышеупомянутые значения формы? Я понимаю, что делает код. Я полагаю, что следующий шаг - взять то, что они предоставили, и внедрить это в PHP. - person Phrosty30; 02.08.2012
comment
Быстро добавьте к этому, можно ли сохранить данные из приведенного выше кода в строку JSON и получить к ней доступ таким образом? - person Phrosty30; 02.08.2012
comment
Да, ответ будет содержать ключ структуры, называемый содержимым файла, если вы используете cfhttp. Я не уверен, что будет эквивалентом cURL. Если вы на самом деле вызываете страницу с расширением файла cfc, то да, вы можете использовать форму или переменную URL с именем returnformat для запроса ответа как json, а не как xml или wddx. (в отправке установите для returnformat значение json). Однако, если вы вызываете страницу cfm, тогда вы ограничены форматом, возвращаемым третьей стороной, и вам придется анализировать его с помощью функций PHP, чтобы получить нужный формат данных. - person Stephen Moretti; 02.08.2012

Спасибо всем за помощь, удалось разобраться с некоторыми подсказками, приведенными выше.

Каналу данных, где я получал доступ к информации, явно нужен кодовый ключ, который я не знал, как выяснить, но мне удалось его получить, это то, что я использовал, не на 100% уверен, что это правильно, но мне удалось получить данные, которые в конечном итоге оказались в формате JSON.

Если есть какие-то подсказки к этому решению, я все уши ..

function name() {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://urlhere.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, false);

$data = array(
    'codekey' => 'mycodekey'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$rawdata = curl_exec($ch);
curl_close($ch);

//Convert Returned JSON data to PHP Object
$output = (json_decode($rawdata));


foreach($output->DATA as $key => $val) {
    echo "<br />" . $val[1];
}

Это немного отличалось от моего примера выше, поскольку я решил использовать более простой фид, в котором были только сезоны, потому что данные JSON, возвращенные в моем фиде выше, содержали намного больше данных (GP, победы, проигрыши, ничьи, PTS и т. Д.) И т. Д.

person Phrosty30    schedule 03.08.2012