使用AXIS1的自上而下的Web服务生成正在使我的复杂型拆开



当我生成一个存根(使用蚀氧,自上而下,axis1)时,该函数的生成如下:

public TokenNamespace.ideas.mace.TokenResponse getToken(TokenNamespace.ideas.mace.TokenRequest tokenRequest) throws java.rmi.RemoteException {
    return null;
}
public TokenNamespace.ideas.mace.TokenResponse getToken2(TokenNamespace.ideas.mace.TokenRequest tokenRequest, boolean stopOnAnyError, TokenNamespace.ideas.mace.EACommand[] command, TokenNamespace.ideas.mace.HttpHeader[] httpHeader) throws java.rmi.RemoteException {
    return null;
}

为什么tokenrequest课程保持完整,而batchcommand和httpheaders被拆除?

我尝试在httpheaders和batchCommand下添加更多的子元素,但它们只是作为其他参数而被拆分。我无法发现他们的声明和GetToken的任何区别。

如果您是在谈论getToken2()方法,那么实际上,如果您看到httpheaders实际上是httpheader的数组,则实际上不会拆除它们getToken2及其CommandBatch也是如此。

如果您在谈论为什么从getToken()方法拆除它们,则解决方案如下。

这是因为在WSDL文件中,您尚未定义GetToken()方法的参数

例如,您有这个

<portType name="TokenService">
        <operation name="getToken" parameterOrder="getToken">
            <input message="tns:TokenService_getToken" />
            <output message="tns:TokenService_getTokenResponse" />
        </operation>
        <operation name="getToken2" parameterOrder="getToken batchCommand httpHeaders">
            <input message="tns:TokenService_getToken2" />
            <output message="tns:TokenService_getTokenResponse" />
        </operation>
    </portType>

您应该像下面的

一样对其进行更新
<portType name="TokenService">
        <operation name="getToken" parameterOrder="getToken batchCommand httpHeaders">
            <input message="tns:TokenService_getToken" />
            <output message="tns:TokenService_getTokenResponse" />
        </operation>
        <operation name="getToken2" parameterOrder="getToken batchCommand httpHeaders">
            <input message="tns:TokenService_getToken2" />
            <output message="tns:TokenService_getTokenResponse" />
        </operation>
    </portType>

那是您的操作GetToken,应在参数订单属性中定义所需的参数。

,也从

更改消息
<message name="TokenService_getToken">
        <part element="tns:httpHeaders" name="httpHeaders" />
    </message>

to

<message name="TokenService_getToken">
        <part element="tns:getToken" name="getToken" />
        <part element="tns:batchCommand" name="batchCommand" />
        <part element="tns:httpHeaders" name="httpHeaders" />
    </message>

之后,它正确生成了代码。

您可以进一步查看此答案,它正在解释如何使用maxoccurs属性。如果未指定,则只会发生一次元素。因此,这就是为什么GetToken没有像其他参数那样将GetToken更改为一个数组,而是被TokenRequest的出现所取代,这确实是GetToken Complectytype中包含的内容。这是tokenrequest

的单一出现

相关内容

  • 没有找到相关文章

最新更新