javascript - 如何通过 Swagger 或 Ajax 将数据发送到 Presence Insights 连接器 API?

标签 javascript ajax ibm-cloud swagger presenceinsights

2016 年 2 月 19 日更新 - 见下文

我正在构建一个用于近距离营销的混合移动应用程序(即将与信标交互的移动应用程序),并且我想使用 Bluemix Presence Insights Service 来收集数据。问题是我无法通过 SDK 连接,因为它是一个混合应用程序,因此我需要使用 connectors API 。我做了一些尝试,但仍然收到 401 响应。

我尝试过Ajax call setting the Basic Autentication Headers :

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)
  },

(也使用加密 token ,我不会重写它)。

然后我制作了一个 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如何声明 post 请求的正文?有什么办法可以访问 swagger.json存在洞察力(这个东西会解决我所有的问题)?

更新 在与 Presence Insights 支持交换信息后,我可以说调用 Swagger 客户端是不可行的。将该服务与混合应用程序一起使用的唯一方法是构建一个代理 Blumix 运行时,它将数据从混合应用程序转发到 Presence Insights 服务。不允许使用外部服务器或调用应用程序内的 API 进行任何其他尝试,因为 CORS 策略不允许这样做。 对于连接器和管理来说也是如此。

我写这篇文章是为了将来引用。

最佳答案

您输入的端点 URL 必须是 swagger 定义或 swagger 规范的位置。加载后,您可以调用 API。请注意,您正在初始化的 swagger 客户端将根据该定义动态创建函数。

现在,稍微研究一下,我确实看到 swagger 定义实际上可用于此服务:

https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

将其放入客户端后,从技术上讲您就可以对服务器进行调用。

但是,此服务存在问题。 swagger 定义看起来无效,因此无法使用 javascript 客户端。例如:

https://online.swagger.io/validator/debug?url=https://presenceinsights.ibmcloud.com/pi-swagger/swagger.json

显示许多错误。我可能错误地使用了该服务中的 swagger.json(我确实嗅出了它),但我指出的——在构建客户端时使用定义——就是这个库的工作原理。

关于javascript - 如何通过 Swagger 或 Ajax 将数据发送到 Presence Insights 连接器 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35220486/

相关文章:

audio - Bluemix 中的 Watson Speech to Text 支持哪些文件格式

javascript - 单击 html 按钮运行 PHP 函数

ibm-cloud - 如何提高 Watson Speech to Text 的准确性?

javascript - 如何使用 javascript 将 Yii2 对象加载到输入中

javascript - javascript 中的原型(prototype)继承不起作用

javascript - 如何在使用辅助类添加和删除类时应用过渡

javascript - JavaScript 中的关联数组与对象

javascript - 使用 Ajax 调用加载外部页面后如何附加事件处理程序?

php - Ajax 在同一页面上发布到 php 不起作用

java - Watson视觉识别,在java中针对多个分类器进行分类