2016-02-11 5 views
1

ShiftPlanning API документацию для проверки подлинности (https://www.shiftplanning.com/api/authentication/) требует запроса POST отправляется в формате JSON следующим образом:Как подключиться к ShiftPlanning.com API с помощью ColdFusion CFHTTP

{ 
    "key": "YOUR_API_KEY", 
    "request": { 
    "module": "staff.login", 
    "method": "GET", 
    "username": "xxxxxxx", 
    "password": "xxxxxxx" 
    } 
} 

Кажется довольно простым, но я не похоже, подключаются к API. Когда я CFDUMP, ответ CFHTTP, который я получаю, является источником HTML-страницы в файле filecontent для структуры, нет JSON.

Вот код, я использую для вызова CFHTTP:

<!--- set values for API authentication ---> 
<cfset stFields = { 
    "key" = "xxxxxxxxxxxxxxxxxxxxxxxx", 
    "request" = { 
     "module" = "staff.login", 
     "method" = "GET", 
     "username" = "xxxxx", 
     "password" = "xxxxx" 
    } 
}> 

<!--- Send an authentication request to SHIFTPLANNING API ---> 
<cfhttp method="post" url="https://www.shiftplanning.com/api/" timeout="30"> 
    <cfhttpparam type="header" name="Accept" value="application/json" /> 
    <cfhttpparam type="header" name="Content-Type" value="application/json" /> 
    <cfhttpparam type="body" value="#serializeJSON(stFields)#" /> 
</cfhttp> 

Когда я CFDUMP serializeJSON (stFields) я получаю:

{ 
"request": { 
    "username":"xxxxx", 
    "module":"staff.login", 
    "method":"GET", 
    "password":"xxxxx" 
    }, 
"key":"xxxxxxxxxxxxxxxxxxxxxxxx" 
} 

Я пропускаю что-то очевидное?

+0

Вы, вероятно, хотите сбросить ответ, а не материал отправляется из –

+0

Спасибо за предложение. Я дал ответ, но это не ответ JSON, а только стандартный ответ CFHTTP, который вы получите с любой обычной HTML-страницы (например, cfhttp.filecontent содержит исходный код HTML для этой страницы). Исходя из этого, похоже, я вообще не подключаюсь к API. Я только сбрасывал то, что я отправляю, чтобы подтвердить, что информация была правильно отформатирована данными JSON, поступающими в API. –

+0

Можете ли вы получить успешный ответ, используя https://www.shiftplanning.com/api/explorer/? Отладка на хроме, по-видимому, предполагает, что вам нужно отправить тело как «urlencoded» с заголовком как '' –

ответ

0

Использование инструментов Chrome dev в проводнике api, кажется, они передают данные JSON в поле формы, которое называется data. Изменение cfhttp вызова Возвращаемых данных JSON для меня:

<!--- Send an authentication request to SHIFTPLANNING API ---> 
<cfhttp method="post" url="https://www.shiftplanning.com/api/" timeout="30" charset="utf-8"> 
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded"> 
    <cfhttpparam type="formfield" name="data" value="#serializeJSON(stFields)#" /> 
</cfhttp> 
+0

Добавление имени "data" в param поля формы сделало трюк! –

Смежные вопросы