如何将我的java变量设置为具有xsi:type

时间:2018-08-09 02:34:43

标签: java xml web-services soap xsi

我有一个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"

1 个答案:

答案 0 :(得分:0)

如果拥有WSDL,则可以生成Java代码。这种生成代码的方法称为自上而下的Web服务开发。

如果您使用的是Maven,请查看此question on java code from wsdl

如果您使用的是Eclipse,还可以通过选择新的Web服务客户端作为项目类型来从WSDL创建新的Web服务客户端,请参见以下屏幕截图:

enter image description here

然后将WSDL添加到下一个对话框,并按照步骤进行操作。请参见下面的屏幕截图:

enter image description here

Netbeans和其他IDE还将允许您从WSDL生成Java类。 Maven很不错,因为它可以在所有IDE中使用。