- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用波兰财政部的官方 API 开发客户端应用程序来检查 NIP 编号。 ( https://sprawdz-status-vat.mf.gov.pl/?wsdl )不幸的是,我对他们发布的 wsdl 有疑问。即有一个包含 2 个部分的消息。
<wsdl:message name="SprawdzNIPNaDzienZapytanie">
<wsdl:part name="NIP" element="tns:NIP"/>
<wsdl:part name="Data" element="tns:Data"/>
</wsdl:message>
我试图通过 wsimport
maven 插件解析它,但客户端代码甚至没有生成,因为错误
[ERROR] 操作“SprawdzNIPNaDzien”:多于一个部分绑定(bind)到正文[错误] 操作“SprawdzNIPNaDzien”:多于一个部分绑定(bind)到正文
我想好吧,我会尝试不同的工具来生成代码。由于我之前已经使用过 cxf,所以我选择使用它。生成的代码很好,但是当我尝试调用该服务时,我确实遇到了与以前类似的错误。
SEI WeryfikacjaVAT 方法 sprawdzNIPNaDzien 注释为 BARE,但它有多个参数绑定(bind)到 body。这是无效的。请用注解标注方法:@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
现在我想知道。有没有办法在不更改 wsdl 文件的情况下使其工作?因为是官方的API,不属于我,没办法修改。我想一定有一种方法可以使用像 SoapUI 这样的 wsdl 来处理它,并且不会抛出任何错误。
@更新
我尝试添加 Khalid 提到的 cxf 参数,因此我的 pom.xml 如下所示:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<defaultOptions>
</defaultOptions>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>other.xml</wsdl>
</wsdlOption>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/my.wsdl</wsdl>
<bindingFiles>
<bindingFile>
${basedir}/src/main/resources/wsdl/bindings.xml
</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
和bindings.xml
文件:
<jaxws:bindings
wsdlLocation="my.wsdl"
xmlns="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<enableWrapperStyle>true</enableWrapperStyle>
</jaxws:bindings>
不幸的是端口仍然是用生成的
而不是 WRAPPED 注释。
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
最佳答案
当 parameterStyle 为 Bare 时,web 方法应该只有 1 个参数。
With document style web services, the BP mandates that each message have zero or one part.
这是一个例子:
<message name = "SubmitPurchaseOrderMessage">
<part name="Order" element "sd:purchaseOrder"/>
</message>
所以,这意味着参数都在 SOAP 请求中的元素内。
因此,将它放在 doc/lit/bare 下是有意义的:
<message name="add">
<part name="parameter1" element="tns:a"/>
</message>
架构将显示如下内容:
<add>
<element name="parameter1" type:int/>
</add>
但是将此消息放在 doc/lit/bare 下是没有意义的:
<message name="add>
<part name = "parameter1" element="tns:a"/>
<part name = "parameter2" element="tns:b"/>
</message>
这是无效的,因为 BP 要求使用文档样式的 Web 服务,消息最多只能包含 1 个元素。
这就是您的网络方法无法部署的原因。您在消息中有多个部分。引用 : https://coderanch.com/t/624936/certification/parameterStyle-Bare-web-methods-parameter
如果您想在不更改 wsdl 文件的情况下使其成为包装样式,那么您可以使用带有 cxf 的绑定(bind)文件来生成代码。
这是 bindings.xml
<jaxws:bindings
wsdlLocation="Your wsdl file path"
xmlns="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<enableWrapperStyle>true</enableWrapperStyle>
</jaxws:bindings>
enableWrapperStyle = false 生成展开的样式代码。
这是你将在 pom.xml 中的配置
<configuration>
<!-- Binding file for Wrapped style services -->
<defaultOptions>
<bindingFiles>
<bindingFile>
${basedir}/src/main/resources/bindings.xml
</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
</configuration>
关于java - 为主体中包含更多部分的 wsdl 生成客户端代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043179/
我在右侧有一个主 div 和一个侧边栏(用于导航/过滤器)。主 div 用于显示日志文件,在任何情况下都不应写入右侧栏。 问题:当出现没有空格的很长的消息(例如很长的文件路径)时,它将写入我的右侧栏。
我想根据内部从 TableView 的高度动态设置主 TableView 的行高。实现这一目标的最佳方法是什么? 最佳答案 尝试使用 UITableViewAutomaticDimension 动态设
我正在尝试为 GridLayout 调用 findviewbyid,但无论我放置在哪里,它都会返回 null。在设置 contentView 并膨胀 ViewStub 后,我将其称为 onCreate
对于一个巨大的 myisam 表(超过 1B 行),我有 2 个唯一变量,其中一个有 18 个数字,另一个有 10 个拉丁字符。 我应该选择哪一个作为主键? 如果是数字;小数还是大整数? 它们都不能帮
我有一个包含 19 行的用户表(第一行是 admin)。我需要添加更多内容,因此我有另一个数据库,其中的表有超过 1,400,000 个用户。 我的表有一个“user_id”作为主键,INT(11),
我是一名优秀的程序员,十分优秀!