Как я могу отправить данные в API коннекторов Presence Insights через Swagger или Ajax?
ОБНОВЛЕНИЕ 19 февраля 2016 - см. Ниже
Я создаю гибридное мобильное приложение для бесконтактного маркетинга (т.е. мобильное приложение, которое будет взаимодействовать с маяками), и я хотел бы использовать службу Bluemix Presence Insights для сбора данных. Проблема в том, что я не могу подключиться через SDK, так как это гибридное приложение, поэтому мне нужно использовать API коннекторов. Я сделал несколько попыток, и я все еще получаю ответ 401.
Я пробовал вызов Ajax, устанавливающий заголовки Basic Autentication:
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
},
или же
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic <my encrypted token>");
},
или же
headers: {
"Authorization": "Basic " + btoa(USERNAME + ":" + PASSWORD)
},
(также с зашифрованным токеном, я не переписываю его).
Затем я создал сервер Node.js и установил swagger-client (т.е. я изменил стратегию):
router.post('/', function (req, res, next) {
var json = req.body.json;
var client = new Swagger({
url: 'https://presenceinsights.ibmcloud.com/pi-swagger/the-connector-api',
success: function () {
console.log("success");
console.log(JSON.stringify(client));
},
authorizations : {
easyapi_basic: new Swagger.PasswordAuthorization('username', 'password')
}
});
res.end();
});
На этот раз я добился прогресса:
Я могу успешно подключиться, но я не могу отправить JSON с данными. Не имея доступа к swagger.json
как мне объявить тело почтового запроса? Есть ли способ получить доступ к swagger.json
о присутствии (эта вещь решит все мои проблемы)?
ОБНОВЛЕНИЕ После обмена информацией со службой поддержки Presence Insights я могу сказать, что звонить клиенту Swagger нецелесообразно. Единственный способ использовать службу с гибридным приложением - это создать прокси-среду исполнения Blumix, которая будет пересылать данные из гибридного приложения в службу Presence Insights. Любая другая попытка, либо с внешнего сервера, либо с помощью вызова API в приложении, не разрешена, так как политика CORS не допускает этого. Это верно для разъемов и управления.
Я пишу это для дальнейшего использования.
1 ответ
URL конечной точки, который вы вводите, должен быть местоположением определения чванства или спецификации чванства. После загрузки вы можете совершать звонки в API. Обратите внимание: инициализируемый клиент swagger будет динамически создавать функции на основе этого определения.
Теперь, немного покопавшись, я увидел, что определение чванства действительно доступно для этой службы:
https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json
Как только вы поместите это в клиент, вы сможете технически совершать звонки на сервер.
Однако есть проблема с этим сервисом. Определение чванства не выглядит допустимым, и из-за этого не будет возможности использовать клиент javascript. Например:
Показывает много ошибок. Возможно, я неправильно использую swagger.json из этого сервиса (я его выяснил), но то, на что я указал - используя определение при создании клиента, - это то, как работает эта библиотека.