【问题标题】:Passing parameters through HTTP Adapter?通过 HTTP 适配器传递参数?
【发布时间】:2014-02-24 10:13:27
【问题描述】:

我想在用户注册我的混合应用程序(基于 IBM Worklight 6.0)后向他/她发送一封电子邮件。

我想将用户的参数(电子邮件 ID)传递给托管的 PHP 文件。我尝试直接在 URL 中发送邮件,如下所示,这很有效:

http://www.xxxyyyzzz.comli.com/email.php?a=someEmailAddress@someEmailHost.com

如何通过 Worklight 适配器执行相同的操作?

ADAPTER.XML

 <wl:adapter name="sendmail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:wl="http://www.worklight.com/integration"
xmlns:http="http://www.worklight.com/integration/http">

<displayName>sendmail</displayName>
<description>sendmail</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>http</protocol>
        <domain>xxxyyy.comli.com</domain>
        <port>80</port> 

        <sslCertificateAlias></sslCertificateAlias> 
        <sslCertificatePassword></sslCertificatePassword>
        -->     
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>

<procedure name="getStories"/>

<procedure name="getStoriesFiltered"/>

 </wl:adapter>

适配器 IMP.JS

function getStories(interest) {
path = getPath(interest);

var input = {
    method : 'get',
    returnedContentType : 'html',
    path : '/email.php?a='
};


return WL.Server.invokeHttp(input);
}

【问题讨论】:

    标签: ibm-mobilefirst worklight-adapters


    【解决方案1】:

    参数在哪里?您没有将其传递给适配器过程 AFAICT。

    试试下面的(我没有端到端测试它,因为我没有一个带有 PHP 脚本监听请求的服务器)。

    HTML

    Your email address: <input type="text" id="emailaddr"/>
    <input type="button" onclick="sendEmail()" value="Submit Email Address"/>
    

    JavaScript

    function sendEmail() {
        var invocationData = {
                adapter : 'myAdapter',
                procedure : 'sendEmailProcedure',
                parameters : [$('#emailaddr').val()] // the email adrress taken from the HTML...
        };
    
        var options = {
                onSuccess : success,
                onFailure : failure
        };
    
        WL.Client.invokeProcedure(invocationData, options);
    }
    
    function success() {
        WL.Logger.debug ("invocation succeeded.");
    }
    function failure() {
        WL.Logger.debug ("invocation failed.");
    }
    

    myAdapter.xml

    ...
    ...
    <connectivity>
        <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>http</protocol>
            <domain>host-address</domain>
            <port>80</port> 
        </connectionPolicy>
        <loadConstraints maxConcurrentConnectionsPerNode="2" />
    </connectivity>
    
    <procedure name="sendEmailProcedure"/>
    

    myAdapter-impl.js

    function sendEmailProcedure(emailAddress) {
        var input = {
            method : 'get',
            returnedContentType : 'html',
            path : '/email.php?a=' + emailAddress
        };
    
        return WL.Server.invokeHttp(input);
    }
    


    查看相关问题:

    【讨论】:

    • 我在调用过程中传递了参数。那是我尝试调用适配器。
    • 您的代码 sn-p 没有显示任何传递给适配器的参数。
    • 我尝试使用 run as-> 调用过程手动调用适配器过程并在 txt 框中传递参数
    • 当你尝试上述方法时?
    • 我在参考您的代码后进行了微小的更改后尝试过..它工作得很好..
    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多