我有一个Web应用程序,需要调用Web服务来处理某些事情。像往常一样,我从客户端请求客户端代码,以便可以基于客户端代码进行编码。
但是,给定的客户端代码为jar文件格式。因此,我真的改变了它。我可以叫它。
现在我有一些问题。给出的客户端代码不是最新的,这意味着我使用的客户端代码实际上与真实的Web服务不匹配。
这是我的wsdl的一部分,可用于通过SOAP UI触发Web服务:
<attributeSet>
<!--Zero or more repetitions:-->
<attributes>
<value>mmm</value>
<attributeID>DP</attributeID>
</attributes>
</attributeSet>
当我使用SOAP UI根据给定的wsdl触发Web服务时,它会向我抛出如下错误:
AttributeSet::validateFieldType (Field 'Password Format' (Field ID 30), data type 'STRING' (Type ID 1), Field value '0', Attribute set Credentials)
因此,我与Web服务人员联系,并告诉他们我需要最新的客户端代码。但是,由于他们所在站点的技术问题,他们无法向我们提供最新的客户代码。他们只是要求我自己更改wsdl,如下所示:
<attributeSet>
<!--Zero or more repetitions:-->
<attributes>
<value xsi:type="xsd:string">m</value>
<attributeID>DP</attributeID>
</attributes>
</attributeSet>
它可用于SOAP UI调用。
但是,现在我想用Java对其进行编码,我只是使用给定的客户端代码来设置值:
ca1.setAttributeID("DP");
ca1.setValue("m");
在从应用程序调用Web服务时,我可以用Java代码编写什么以使其具有xsi:type="xsd:string"
?
答案 0 :(得分:0)
如果拥有WSDL,则可以生成Java代码。这种生成代码的方法称为自上而下的Web服务开发。
如果您使用的是Maven,请查看此question on java code from wsdl
如果您使用的是Eclipse,还可以通过选择新的Web服务客户端作为项目类型来从WSDL创建新的Web服务客户端,请参见以下屏幕截图:
然后将WSDL添加到下一个对话框,并按照步骤进行操作。请参见下面的屏幕截图:
Netbeans和其他IDE还将允许您从WSDL生成Java类。 Maven很不错,因为它可以在所有IDE中使用。