我知道問題是與數組傳遞。
你怎麼知道這個?
prolog中不允許有內容。
這幾乎總是將數據傳遞到一個XML解析器是無效的XML,或有序言之前的一些人物,這是一個徵兆:
<?xml version="1.0" encoding="utf-8"?>
在您的適配器,你告訴它希望來自您所調用的後端HTTP服務的XML。我能夠通過從後端HTTP服務返回無效的XML來重現您看到的相同消息。實際上,我可以在響應中放入任何無效的XML,並且我會得到「內容在prolog中不被允許」。信息。我可以返回一個404頁的頁面,或者帶有「text/plain」的Content-Type標頭。告訴適配器期望XML,但給了別的東西。
請務必檢查您沒有收到404頁面或500或您的適配器正在調用的後端HTTP服務中的其他內容。
以下是我轉載的消息 「的內容是不是在序言中不允許」 從我的適配器:
首先,創建一個適配器xmltester.xml:
<wl:adapter name="xmltester"
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>xmltester</displayName>
<description>xmltester</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>localhost</domain>
<port>3000</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>
<procedure name="getStuff"/>
</wl:adapter>
和xmltester-implement執行。 js:
function getStuff() {
var input = {
method : 'get',
returnedContentType : 'xml',
path : 'index.xml',
parameters : {
'arrRequests' : JSON.stringify(['one', 'two'])
}
};
return WL.Server.invokeHttp(input);
}
我創建了node服務器(服務器。JS)是我的後端:
var express = require('express');
var app = express();
var port = 3000;
app.get('/index.xml', function(req, res){
var body = '<?xml version="1.0" encoding="utf-8"?><boo/>';
res.setHeader('Content-Type', 'application/xml');
res.setHeader('Content-Length', body.length);
res.end(body);
});
app.listen(port);
console.log('Listening on port %s', port);
啓動服務器:
npm install express
node server.js
然後創建工作燈應用程序的一個按鈕:
<button id="doit">Do it!</button>
,並被鏈接點擊監聽器,看看有什麼我從工作燈找回適配器被調用時:
$ = WLJQ;
$("#doit").click(function() {
var invocationData = {
adapter : 'xmltester',
procedure : 'getStuff',
parameters : []
};
WL.Client.invokeProcedure(invocationData,{
onSuccess : function(data) {alert("SUCCESS" + JSON.stringify(data));},
onFailure : function(data) {alert("FAILURE" + JSON.stringify(data));}
});
return false;
});
我可以準確地再現問題時,我的後端服務器在序言(您可以通過編輯上面的代碼server.js嘗試自己)的前線回來的額外字符的有效載荷,如:
somethinghere<?xml version="1.0" encoding="utf-8"?>
或任何非XML負載,就此而言。
你嘗試傳遞一個字符串?例如:。'VAR arrRequests = [ '[' 「 '你好'」, ']']加入( '')'應該返回「 」[ '你好']「'。 – cnandreu