Java wsdon';行不通

Java wsdon';行不通,java,wsdl,webservice-client,Java,Wsdl,Webservice Client,我想用Java编写一个客户机,但它不起作用。 我使用“c:\ProgramFiles(x86)\Java\jdk1.8.0\U 60\bin\wsimport.exe”http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl 运行命令,我会得到一个类似的结果:操作“Consulta_EDOPROC”多个链接到身体部位。第58行 [ERROR] Operación "Consulta_DNP

我想用Java编写一个客户机,但它不起作用。

我使用“c:\ProgramFiles(x86)\Java\jdk1.8.0\U 60\bin\wsimport.exe”http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl

运行命令,我会得到一个类似的结果:操作“Consulta_EDOPROC”多个链接到身体部位。第58行

[ERROR] Operación "Consulta_DNPRC": hay más de una parte enlazada al cuerpo.
  línea 58 de http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl

Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModelerBase.error(WSDLModelerBase.java:732)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.setMessagePartsBinding(WSDLModeler.java:1505)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.setMessagePartsBinding(WSDLModeler.java:1431)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.processLiteralSOAPOperation(WSDLModeler.java:767)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.processSOAPOperation(WSDLModeler.java:698)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.processPort(WSDLModeler.java:466)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.processService(WSDLModeler.java:245)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:216)
        at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:126)
        at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429)
        at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190)
        at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159)
        at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)

无论名为“Body”的部分位于何处,wsdl都会出现问题,例如


问题是在缺少的部分上应该有元素或类型属性。纠正它&您可以通过wsimport生成相应的java对象。

我也有同样的问题,我已经这样解决了:

  • 我创建了一个Maven项目
  • 在pom.xml中,我添加了“org.codehaus.mojo:jaxws-maven-plugin”插件
  • 我在src/main/binding/binding.xml中创建了一个绑定文件
  • 我已使用服务器的证书路径创建了一个信任库文件
  • pom.xml中的插件部分:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.5</version>
        <configuration>
            <sourceDestDir>${project.build.sourceDirectory}</sourceDestDir>
            <bindingDirectory>${project.basedir}/src/main/bindings</bindingDirectory>
            <extension>true</extension>
            <genWsdl>false</genWsdl>           
            <xdisableSSLHostnameVerification>false</xdisableSSLHostnameVerification>
            <keep>true</keep>
            <protocol>soap1.1</protocol>
            <verbose>true</verbose>
            <xnocompile>true</xnocompile>
            <xdebug>true</xdebug>
        </configuration>
        <executions>
            <execution>
              <goals>
                  <goal>wsimport</goal>
              </goals>
              <configuration>
                  <vmArgs>
                      <vmArg>-Djavax.net.ssl.trustStore=${project.basedir}/src/main/ssl/catastro.jks</vmArg>
                     <vmArg>-Djavax.net.ssl.trustStorePassword=changeit</vmArg>
                 </vmArgs>
                 <wsdlUrls>
                     <wsdlUrl>https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL</wsdlUrl>
                 </wsdlUrls>
             </configuration>
            </execution>
        </executions>
    </plugin>
    

    我有相同类型的问题,但服务器端现在不会做任何更改。是否有另一种方法来解析wsdl文件?一个简单的解决方案是在本地计算机中复制wsdl并删除未定义的元素,然后使用wsimport从修改后的wsdl.won生成POJO,这会有什么影响?这样,您可以跳过未定义的wsdl元素,从而避免错误,并且可以处理剩余元素。我还有一个问题,请参阅
    [WARNING] warning: part Body is ignored, either the "element" or the "type" attribute is required in part "Body"
      line 125 of http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?wsdl
    
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.5</version>
        <configuration>
            <sourceDestDir>${project.build.sourceDirectory}</sourceDestDir>
            <bindingDirectory>${project.basedir}/src/main/bindings</bindingDirectory>
            <extension>true</extension>
            <genWsdl>false</genWsdl>           
            <xdisableSSLHostnameVerification>false</xdisableSSLHostnameVerification>
            <keep>true</keep>
            <protocol>soap1.1</protocol>
            <verbose>true</verbose>
            <xnocompile>true</xnocompile>
            <xdebug>true</xdebug>
        </configuration>
        <executions>
            <execution>
              <goals>
                  <goal>wsimport</goal>
              </goals>
              <configuration>
                  <vmArgs>
                      <vmArg>-Djavax.net.ssl.trustStore=${project.basedir}/src/main/ssl/catastro.jks</vmArg>
                     <vmArg>-Djavax.net.ssl.trustStorePassword=changeit</vmArg>
                 </vmArgs>
                 <wsdlUrls>
                     <wsdlUrl>https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL</wsdlUrl>
                 </wsdlUrls>
             </configuration>
            </execution>
        </executions>
    </plugin>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jxb:bindings version="1.0"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:annox="http://annox.dev.java.net"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
        <jxb:globalBindings collectionType="java.util.ArrayList" 
            underscoreBinding="asCharInWord"
            enableJavaNamingConventions="true" generateIsSetMethod="false"
            typesafeEnumBase="xs:string" typesafeEnumMemberName="generateName">
            <jxb:serializable uid="1" />
        </jxb:globalBindings>
    
    </jxb:bindings>
    
    [INFO] Processing: https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL
    [INFO] jaxws:wsimport args: [-keep, -s, '/workspace/catastro-workitem/src/main/java', -d, '/workspace/catastro-workitem/target/classes', -verbose, -encoding, UTF-8, -extension, -Xnocompile, -Xdebug, -b, 'file:/workspace/catastro-workitem/src/main/bindings/binding.xml', "https://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?WSDL"]
    
    parsing WSDL...
    .../...
    .../...
    Generating code...
    
    es/meh/catastro/Callejero.java
    es/meh/catastro/Consulta_DNP.java
    es/meh/catastro/Consulta_DNPPP.java
    es/meh/catastro/Municipios.java
    es/meh/catastro/ObjectFactory.java
    es/meh/catastro/Provincias.java
    es/meh/catastro/package-info.java
    org/tempuri/ovcservweb/ovccallejero/CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020Catastro.java
    org/tempuri/ovcservweb/ovccallejero/CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroHttpGet.java
    org/tempuri/ovcservweb/ovccallejero/CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroHttpPost.java
    org/tempuri/ovcservweb/ovccallejero/CallejeroX0020DeX0020LaX0020SedeX0020ElectrónicaX0020DelX0020CatastroSoap.java
    org/tempuri/ovcservweb/ovccallejero/package-info.java