gpt4 book ai didi

android - 为什么工作灯适配器不工作?

转载 作者:行者123 更新时间:2023-11-29 01:41:01 24 4
gpt4 key购买 nike

我是 IBM Worklight 的新手,正在尝试“创建 HTTP 适配器”-“练习和代码示例”,但我无法获得提要,而是总是从“WL.Client.invokeProcedure”获得失败响应。

我的“FeedsAdapter.js”在这里:

var FeedsAdapter = (function(){
function getFeeds(_caller){
var caller = _caller;

var invocationData = {
adapter: "RSSReader_1",
procedure: "getFeedsFiltered",
parameters: []
};

WL.Client.invokeProcedure(invocationData, {
onSuccess: getFeedsSuccess,
onFailure: getFeedsFailure
});

function getFeedsSuccess(data){
caller.callback(data.invocationResult.Items);
}

function getFeedsFailure(){
alert("Failed to get feeds. Please check backend connectivity and restart the app");
}
}

return {
getFeeds: getFeeds
};
}());

过滤后的.xsl:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/" >
<xsl:output method="text"/>

<xsl:template match="/">
{
'Items': [
<xsl:for-each select="//item">
{
'title': '<xsl:value-of select="title"/>',
'creator': '<xsl:value-of select="dc:creator"/>',
'link': '<xsl:value-of select="link"/>',
'pubDate': '<xsl:value-of select="pubDate"/>'
},
</xsl:for-each>
]
}
</xsl:template>

RSSReader_1.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed Materials - Property of IBM
5725-G92 (C) Copyright IBM Corp. 2006, 2012. All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
-->
<wl:adapter xmlns:wl="http://www.worklight.com/integration"
xmlns:http="http://www.worklight.com/integration/http"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="RSSReader_1">

<displayName>RSSReader_1</displayName>
<description>RSSReader_1</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>engadget.com</domain>
<port>80</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2"/>
</connectivity>

<procedure name="getFeeds"/>

<procedure name="getFeedsFiltered"/>

RSSRearder_1-impl.js:

function getFeeds() {
var input = {
method : 'get',
returnedContentType : 'xml',
path : "rss.xml"
};


return WL.Server.invokeHttp(input);
}

function getFeedsFiltered() {

var input = {
method : 'get',
returnedContentType : 'xml',
path : "rss.xml",
transformation : {
type : 'xslFile',
xslFile : 'filtered.xsl'
}
};

return WL.Server.invokeHttp(input);
}

所有其他适配器文件与“HTTP 适配器”练习和代码示例中的 RSSReader 完全相同。我正在通过 Android 测试示例。

请求响应总是到达“getFeedsFailure()”。所以我需要帮助来解决问题,谢谢!

最佳答案

我测试了您的代码,您需要修复两个问题才能使适配器正常工作。

  1. 添加</xsl:stylesheet>到 filtered.xsl 的末尾
  2. 更改engadget.comwww.engadget.com否则你会收到 404 not found。

希望这对您有所帮助。

对我来说,如果我没有在上面的 #2 中添加 www,我会收到 404。

我将您的代码添加到 main.js 作为快速测试,它运行良好。我认为您可能遇到了计时问题,即在您调用电话时 Worklight 尚未完成初始化。

var FeedsAdapter = (function(){
function getFeeds(_caller){
var caller = _caller;

var invocationData = {
adapter: "RSSReader_1",
procedure: "getFeedsFiltered",
parameters: []
};

WL.Client.invokeProcedure(invocationData, {
onSuccess: getFeedsSuccess,
onFailure: getFeedsFailure
});

function getFeedsSuccess(data){
console.log(data);
caller.callback(data.invocationResult.Items);
}

function getFeedsFailure(){
alert("Failed to get feeds. Please check backend connectivity and restart the app");
}
}

return {
getFeeds: getFeeds
};

}());

FeedsAdapter.getFeeds();

关于android - 为什么工作灯适配器不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com