我正在使用 wsdl 文件上的 eclipse 选项“生成客户端”来生成 java 代码。之后,我尝试使用生成的代码创建对 Web 服务器的请求。但是这一步有一个小问题:请求需要4个参数,其中2个参数是可选的。如果将这些参数的值设置为 NULL,则会出现错误。如果简单的话,请求具有以下格式:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://ossj.org/xml/Inventory/v1-2" xmlns:v11="http://ossj.org/xml/Common/v1-5">
<soapenv:Header/>
<soapenv:Body>
<v1:getEntityByKeyRequest>
<v1:entityKey>
<!--Optional:-->
<v11:applicationContext>
<!--Optional:-->
<v11:factoryClass>?</v11:factoryClass>
<!--Optional:-->
<v11:URL>?</v11:URL>
<!--Optional:-->
<v11:systemProperties>
<!--Zero or more repetitions:-->
<v11:property>
<v11:name>?</v11:name>
<v11:value>?</v11:value>
</v11:property>
</v11:systemProperties>
</v11:applicationContext>
<!--Optional:-->
<v11:applicationDN>?</v11:applicationDN>
<v11:type>?</v11:type>
<!--Optional:-->
<v11:primaryKey>?</v11:primaryKey>
</v1:entityKey>
<v1:attrNames>
<!--Zero or more repetitions:-->
<v11:item>?</v11:item>
</v1:attrNames>
</v1:getEntityByKeyRequest>
</soapenv:Body>
</soapenv:Envelope>
我需要发送这种形式的 XML:
<v1:getEntityByKeyRequest xmlns:v1="http://ossj.org/xml/Inventory/v1-2" xmlns:v12="http://ossj.org/xml/Common-CBEResource/v1-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v11="http://ossj.org/xml/Common/v1-5">
<v1:entityKey xsi:type="v12:ResourceKey">
<v11:type xsi:type="xs:string">resourceKey</v11:type>
<v11:primaryKey xsi:type="xs:string">9135950291913240207</v11:primaryKey>
</v1:entityKey>
<attrNames>
<v1:item>9132441843113500508</v1:item>
</attrNames>
</v1:getEntityByKeyRequest>
但是,使用生成的 java 代码,Web 服务会以这种形式接收 XML
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://ossj.org/xml/Inventory/v1-2" xmlns:v11="http://ossj.org/xml/Common/v1-5">
<soapenv:Header/>
<soapenv:Body>
<v1:getEntityByKeyRequest>
<v1:entityKey>
<v11:applicationContext>
<v11:factoryClass></v11:factoryClass>
<v11:URL></v11:URL>
<v11:systemProperties>
<v11:property>
<v11:name></v11:name>
<v11:value></v11:value>
</v11:property>
</v11:systemProperties>
</v11:applicationContext>
<v11:applicationDN></v11:applicationDN>
<v11:type>resourceKey</v11:type>
<v11:primaryKey>9135950291913240207</v11:primaryKey>
</v1:entityKey>
<v1:attrNames>
<v11:item></v11:item>
</v1:attrNames>
</v1:getEntityByKeyRequest>
</soapenv:Body>
</soapenv:Envelope>
那么,如何使用只有 4 个参数中的 2 个的 java 代码请求 Web 服务呢?
PS对不起我的英语不好:)