更新2016年2月19日-见下文
我正在构建一个用于近距离营销的混合移动应用程序(即一个将与信标交互的移动应用程序),我想使用Bluemix存在洞察服务来收集数据。问题是我无法通过SDK连接,因为它是一个混合应用程序,因此我需要使用连接器API。我已经做了一些尝试,我仍然得到了401的回应。
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(也就是说,我改变了策略):
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,我如何声明post请求的主体?有没有任何方法可以访问swagger.json的存在洞察力(这个东西将解决我的所有问题)?
更新后,在交换信息与存在洞察支持,我可以说,它是不可行的调用Swagger客户端。与混合应用程序一起使用该服务的唯一方法是构建代理Blumix运行时,它将将数据从混合应用程序转发到Presence服务。不允许使用外部服务器或通过在应用程序中调用API进行任何其他尝试,因为CORS策略不允许这样做。这对于连接器和管理来说是正确的。
我写这封信供将来参考。
发布于 2016-02-09 05:48:02
您要放置的端点URL需要是swagger定义或swagger规范的位置。一旦加载了API,就可以调用API了。注意,您正在初始化的swagger客户端将根据该定义动态创建函数。
现在,我仔细观察了一下,我确实看到了这个服务实际上是可用的:
https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json
一旦您将其放入客户端,就可以在技术上对服务器进行调用。
但是,这项服务存在一个问题。swagger定义看起来无效,因此不可能使用javascript客户端。例如:
显示出许多错误。我可能不正确地使用这个服务中的swagger.json (我确实嗅到了它),但是我指出--在构造客户机时使用定义--是这个库是如何工作的。
https://stackoverflow.com/questions/35220486
复制相似问题