【问题标题】:How can I send data to Presence Insights connectors API via Swagger or Ajax?如何通过 Swagger 或 Ajax 将数据发送到 Presence Insights 连接器 API?
【发布时间】:2016-02-05 09:27:59
【问题描述】:

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

(还有加密令牌,我不重写)。

然后我制作了一个 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 策略不允许这样做。 这适用于连接器和管理。

我正在写这篇文章以供将来参考。

【问题讨论】:

    标签: javascript ajax ibm-cloud swagger presenceinsights


    【解决方案1】:

    您放置的端点 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(我确实嗅出了它),但我指出的——在构建客户端时使用定义——是这个库的工作原理。

    【讨论】:

    • 谢谢。我正在开票以阐明这些问题。
    猜你喜欢
    • 2023-03-03
    • 2014-03-07
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2010-09-22
    • 2021-12-31
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多