当我生成一个存根(使用蚀氧,自上而下,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