Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带参数的外部服务的WSO2 Mashup_Javascript_Web Services_Wso2_Mashup - Fatal编程技术网

Javascript 使用带参数的外部服务的WSO2 Mashup

Javascript 使用带参数的外部服务的WSO2 Mashup,javascript,web-services,wso2,mashup,Javascript,Web Services,Wso2,Mashup,我正试图在WSO2中创建一个mashup作为5.1.0。我已经成功地创建了一个简单的HelloWorld服务,但是当我尝试将其他服务集成到其中时,我遇到了一个错误 这是我的HelloWorld服务: this.documentation = "This is a test Hello World service"; system.include("HelloStub.js"); hello.documentation = "say hello" hello.inputTypes = {"use

我正试图在WSO2中创建一个mashup作为5.1.0。我已经成功地创建了一个简单的HelloWorld服务,但是当我尝试将其他服务集成到其中时,我遇到了一个错误

这是我的HelloWorld服务:

this.documentation = "This is a test Hello World service";
system.include("HelloStub.js");

hello.documentation = "say hello"
hello.inputTypes = {"user": "string"}
hello.outputType = "string";
function hello(user){
    try{
        var response = services["admin/testmashup"].operations["sayMyName"](user);
    }catch(e){
        return "Danger, Robinson! " + e.toString()
    }
    return "Hello, there! " + response;
}

function whoAreYou(){
    try{
        var response = services["admin/testmashup"].operations["toString"]();
    }catch(e){
        return "Danger, Robinson! " + e.toString()
    }
    return "Hello! " + response;    
}
这是
admin/testmashup
服务

this.serviceName = "testmashup";
this.documentation = "Test mashup service" ;

toString.documentation = "say something" ;
toString.inputTypes = { /* no arguments */ };
toString.outputType = "string"; 
function toString()
{
   return "Hi, my name is testmashup";
}

sayMyName.documentation = "Make me feel happy";
sayMyName.inputTypes = {"myName":"string"};
sayMyName.outputType = "string";
function sayMyName(myName){
    return "Your very beautiful name is " + myName;
}
我必须注意,当我调用
admin/testmashup
服务时,它会按预期工作

文件
HelloStub.js
是一个Javascript(E4X)存根,由WSO2应用程序服务器生成

当我测试没有参数的操作
whoAreYou
时,我得到以下响应:

<ws:whoAreYouResponse xmlns:ws="http://services.mashup.wso2.org/helloWorld?xsd">
   <return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:js="http://www.wso2.org/ns/jstype" js:type="string" xsi:type="xs:string">Hello! &lt;ws:toStringResponse xmlns:ws="http://services.mashup.wso2.org/testmashup?xsd"&gt;&lt;return&gt;Hi, my name is testmashup&lt;/return&gt;&lt;/ws:toStringResponse&gt;</return>
</ws:whoAreYouResponse>
我得到以下错误:

<ws:helloResponse xmlns:ws="http://services.mashup.wso2.org/helloWorld?xsd">
   <return>Danger, Robinson! org.wso2.carbon.CarbonException: Invalid input for the payload in WSRequest Hostobject : John</return>
</ws:helloResponse>

危险,罗宾逊!org.wso2.carbon.CarbonException:WSRequest Hostobject:John中的有效负载输入无效
在过去的几天里,我一直在努力使这项工作顺利进行,并到处寻找答案,但我似乎找不到答案。未提供使用具有一个或多个参数的操作的外部Web服务存根的示例

另外,如果可能的话,我想知道如何使用javascript mashup中的REST-JSON服务


有什么想法吗?

事实证明,官方文件中缺少一系列重要的信息。特别是,关于我的问题,重要的是要知道,在内部生成的存根使用BagderFish符号来执行XML和JSON之间的转换。我进入存根,再往下一点,找到这段代码,关于我的
sayMyName
方法:

service.operations['sayMyName'] = function (request) {
    var isAsync, response, resultValue;
    var operation = service.operations['sayMyName'];
    request = typeof request === "string" ? request : utils.bf2xml(request);
    service.$._options = new Array();
    .
    .
    .
函数
bf2xml
将獾鱼符号中的JSON转换为XML。该函数稍后在存根中定义,也可以找到。关于獾鱼符号的信息也可以广泛获得

为了使
HelloWorld
服务正常工作,您可以传递带有XML的字符串(在这种情况下,
bf2xml
函数将不会被调用),或者传递带有正确符号的JSON对象,即獾鱼

这将有助于:

var response = services["admin/testmashup"].operations["sayMyName"]({request : {myName:{$:user}}});

这是我第二次回答自己的问题。。。如果这不是我发布的第二个问题,那就一点也不奇怪了。。。
var response = services["admin/testmashup"].operations["sayMyName"]({request : {myName:{$:user}}});