ibmmobilefirst-Class Cast:java.lang.String不能转换为org.mozilla.j
ibm mobilefirst - Class Cast: java.lang.String cannot be cast to org.mozilla.javascript.Scriptable
在调用http适配器过程时,它会弹出一个包含ProcedureName、Signature和Paramaters的对话框,当我在输入两个字符串类型参数后点击Run按钮时,我会收到"class Cast:java.lang.string cannot Cast to org.mozilla.javascript.Scriptable"错误。
仅供参考,我使用worklight应用程序框架数据对象编辑器创建了一个worklight适配器(自动生成.xml和impl.js文件)
impl.js文件
function CurrencyConvertor_ConversionRate(params, headers){
var soapEnvNS;
soapEnvNS = 'http://schemas.xmlsoap.org/soap/envelope/';
var request = buildBody(params, 'xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.webserviceX.NET/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" ', soapEnvNS);
return invokeWebService(request, headers);
}
function buildBody(params, namespaces, soapEnvNS){
var body =
'<soap:Envelope xmlns:soap="' + soapEnvNS + '">'n' +
'<soap:Body>'n';
body = jsonToXml(params, body, namespaces);
body +=
'</soap:Body>'n' +
'</soap:Envelope>'n';
return body;
}
function getAttributes(jsonObj) {
var attrStr = '';
for(var attr in jsonObj) {
var val = jsonObj[attr];
if (attr.charAt(0) == '@') {
attrStr += ' ' + attr.substring(1);
attrStr += '="' + val + '"';
}
}
return attrStr;
}
function jsonToXml(jsonObj, xmlStr, namespaces) {
var toAppend = '';
for(var attr in jsonObj) {
var val = jsonObj[attr];
if (attr.charAt(0) != '@') {
toAppend += "<" + attr;
if (typeof val === 'object') {
toAppend += getAttributes(val);
if (namespaces != null)
toAppend += ' ' + namespaces;
toAppend += ">'n";
toAppend = jsonToXml(val, toAppend);
}
else {
toAppend += ">" + val;
}
toAppend += "</" + attr + ">'n";
}
}
return xmlStr += toAppend;
}
function invokeWebService(body, headers){
var input = {
method : 'post',
returnedContentType : 'xml',
path : '/CurrencyConvertor.asmx',
body: {
content : body.toString(),
contentType : 'text/xml; charset=utf-8'
}
};
//Adding custom HTTP headers if they were provided as parameter to the procedure call
headers && (input['headers'] = headers);
return WL.Server.invokeHttp(input);
}
该错误表示代码中的某个位置存在无效的JSON对象。
很可能是在使用body.toString()
将正文转换为字符串时出现此错误因为toString
将返回无效的JSON对象值[object Object]
(既不是有效的String也不是有效的Array)
相反,使用json.stringify(body)
,它应该会产生你想要做的事情。
此外,尝试添加一些日志行以方便跟踪错误
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 将圆柱体转换为弯管
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 将 XML 字符串转换为 org.w3c.dom.Document
- 这个问题的原因是什么;无法转换org.json.JSONArray类型的参数“”;在react原生android中
- ibmmobilefirst-Class Cast:java.lang.String不能转换为org.mozilla.j