如何从IBM Bluemix调用Web服务并捕获数据

时间:2016-07-16 02:20:20

标签: web-services cloud ibm-cloud

我在IBM Bluemix上有一个帐户。外部数据提供者将允许我访问他们的一个Web服务,这些服务在被调用时将异步地获取数据。如何调用Web服务并捕获数据?

2 个答案:

答案 0 :(得分:2)

您说Web服务是异步的,但在Web应用程序的上下文中,服务更可能是同步的,但是它是异步访问的。最有可能的是,例如通过AJAX调用该服务。调用该服务,然后继续执行。当响应进入时,异步执行成功或失败函数(回调)。 如果the service itself是异步的,那么您必须基于某些队列逻辑(或消息驱动的bean或其他)开发更复杂的客户端。 上述两种情况都需要您开发一个调用Web服务并处理其响应的应用程序。

您可以使用RuntimesBoilerplates

执行此操作

还有API Connect服务,允许(在其他功能中)import API定义,以及test来自API Designer测试工具的服务。但是,如果您需要使用数据并在其上执行某些逻辑,则需要一个如上所述的应用程序。

答案 1 :(得分:0)

您应该可以使用上面提到的AJAX调用使用任何语言调用url。如果返回类型是JSON,那么任何语言也应该能够从AJAX调用中获取结果。

这是我用来从我的Bluemix应用程序获取数据的node.js方法:

/*

 *  url: http or https web address that accepts POST..or GET 
 
 *  callbackFunc:  pass the name of a callback function that is in the same scope of makeAjaxCall().  you can pass NULL
 
 *  obj: the POST parameters.  I use a JSON object
 
 *  callbackParams: any parameters you want to pass to your callback function.  can be NULL.
 
 */
function makeAjaxCall(url, callbackFunc, obj, callbackParams) {
    var _data = (!isNull(obj)) ? obj : null;


    if (!isNull(_data)) {

        $.ajax({
            url: url,
            //dataType: "json",
            type: "POST",
            data: _data,
            success: function (res) {
                callbackFunc(jsonStr);
            },
            error: function (err) {
                if (err.status == 500) {
                    showNotification(err.responseText);
                }
                showBusy(false);
            }
        });
    }
}



function isNull(inVar) {
    if (typeof (inVar) == 'undefined') {
        return true;
    }
    else if (typeof (inVar) == 'string') {
        if (inVar == '') {
            return true;
        }
    }
    else if (typeof (invar) == 'int') {
        if (inVar < 1) {
            return true;
        }
    }
    else if (inVar == null) {
        return true;
    }

    return false;
}