我是在wsdl文件上使用eclipse选项“Generate Client”编写的java代码。 之后,我正在尝试使用生成的代码创建对Web服务器的请求。 但是在这一步中存在一个小问题:请求需要4个参数,其中2个参数是可选的。如果将theese参数的值设置为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>
那么,如何使用java代码仅使用4个参数中的2个来请求Web服务?
P.S。抱歉我的英语不好:)