coldfusion — получение опубликованных данных в формате JSON и их анализ

#json #coldfusion #cfc

#json #coldfusion #cfc

Вопрос:

Я впервые пишу cfc, который будет перехватывать данные в формате JSON с внешнего веб-сервера, на котором будет размещаться информация.

Я работаю с новой службой, которую можно настроить на отправку нам через HTTP POST на указанный мной URL-адрес пакета JSON информации о неудачных транзакциях.

Я решил настроить CFC с удаленным доступом для захвата и десериализации данных JSON во что-то, с чем мы могли бы затем действовать. Однако я не могу понять, как настроить функцию в CFC для получения данных?

Я установил URL в www.mydomain.com/com/processRemote.cfc?method=catchJSONdataamp;ReturnFormat=json

Чтобы протестировать это, я настраиваю простую тестовую страницу, на которой должны публиковаться данные сеанса:

 <cfhttp 
  result="result"
  method="post" 
  url="http://www.mydomain.com/com/processRemote.cfc?method=catchJSONdataamp;ReturnFormat=json">

    <cfhttpparam type="header" name="content-type" value="application/json"/>
    <cfhttpparam type="body" value="#serializeJSON(session)#"/>
  

Итак, где я теряюсь, это какое имя cfargument у меня было бы в моем cfc, в котором я изначально сохранял бы данные JSON? У меня нет контроля над удаленной службой, которая отправляла бы данные в формате JSON.

Спасибо,

Ответ №1:

Если вы читаете содержимое из тела HTTP-запроса, вы не найдете его в области аргументов — вам нужно извлечь его непосредственно из запроса:

 if (cgi.content_type EQ "application/json")
{
    myData = deserializeJSON(ToString(getHTTPRequestData().content));
}
  

Я использую фреймворк Taffy [1] для создания подобных сервисов (отказ от ответственности: На самом деле я помог написать часть фреймворка, которая обрабатывает этот случай).

[1] http://atuttle.github.com/Taffy

Комментарии:

1. Спасибо bpanulla! Я пытался создать cfc, который принимал бы опубликованные данные напрямую. Используя ваш ответ, я создал страницу cfm, которая принимает данные, проверяет, что это то, что мы ожидаем, а затем передает их cfc для обработки.

2. Этот же метод должен работать так же хорошо в вашем методе CFC. Вашему CFC не нужно определять какие-либо аргументы (CFARGUMENT или script).

3. Это чертовски раздражало меня в течение нескольких часов… Если я получаю сообщение, я бы ожидал, что данные будут в области формы! Очевидно, нет, если это JSON, опубликованный в теле. Ах, ну что ж, урок усвоен. Приветствия.