我们有SOAP webservice,我们的方法首先是WSDL。下面你可以看到从wsdl通过wsdl到java插件生成的请求对象pom.xml.这就是请求对象的样子:
@XmlRootElement(name="XXXRequest")公共类GetXXXRequest{
@XmlElement(name = "XXX", required = true)
@XmlJavaTypeAdapter(XX .class)
protected String x;
@XmlElement(name = "YYY", required = true)
@XmlJavaTypeAdapter(XX .class)
protected String y;
@XmlElement(name = "ZZZ", required = true)
@XmlJavaTypeAdapter(XX .class)
protected String z;
@XmlElement(name = "TTT", required = true)
@XmlJavaTypeAdapter(XX.class)
protected String t;
@XmlElement(name = "TypeOfRequest", required = true)
protected TypeOfRequest type;
@XmlElement(name = "Criteria", required = true)
protected Criteria criteria;
类型请求是ENUM。现在TypeOfRequest有7个值。让我们说用户发送任何其他值,而不是在TypeOfRequest中为它定义的7个值,那么它就会成为NULL,我们的验证不能验证它,看看用户是否真的没有选择任何TypeOfRequest或给出一些其他值,而不是7个值。所以在螺母壳我想验证和发送有意义的消息,如果用户选择任何其他值7值以外。我无法实现它。有什么办法我能做到吗?我有一个想法,我可以拦截它,但需要指导来实施它。我们正在使用cxf、jaxws和Spring框架。
我能够解决它。我所做的步骤是:1)创建一个自定义适配器。
公共类RequestXXAdapter扩展了XmlAdapter{
@Override
public ReqXXXX unmarshal(String v) throws Exception {
try {
return ReqXXX.valueOf(v);
} catch(Exception e) {
throw new JAXBException("Invalid parameter");
}
}
@Override
public String marshal(ReqXXXX type) throws Exception {
return type.name();
}
}
步骤2:在xsd中添加以下ReqXXXX枚举。
<xs:annotation>
<xs:appinfo>
<xjc:javaType name="com.XX.XX.XX.ReqXXXX"
adapter="com.xx.xx..yy.ReqXXXAdapter" />
</xs:appinfo>
</xs:annotation>
......
所以上面的代码生成了注解XmlJavaTypeAdapter@XmlJavaTypeAdapter(ReqTXXXXAdapter.class)保护ReqXXXX reqxxxx;
因此,现在有了这个更改,我可以在我的serviceimpl命中之前验证Enum。
谢谢我们使用的是SPring,但它不是一个web应用程序,而是SOAP web服务,因此没有控制器。第二件事是,若用户为TYpeOfRequest发送不同的值,即Enum,那个么我们将得到null。我想进行验证,以便验证Enum的错误值。
您的标签暗示您正在使用Spring;在这种情况下,您可能需要查看Spring验证。使用它,您可以添加注释,指定类的契约实例应该维护:@NonNull
等。,然后在注入实例的控制器方法中添加@Valid
(或@Valated
)。
public class XXXRequest {
// ...
protected @NonNull TypeOfRequest type;
// ...
}
在控制器中:
@GetMapping("/{id}")
public ResponseEntity<?> get(final @Valid XXXRequest request) {
// ...
}
问题内容: 是否可以使用Python的库发送SOAP请求? 问题答案: 确实有可能。 这是一个使用普通请求lib调用Weather SOAP Service的示例: 一些注意事项: 标头很重要。没有正确的标头,大多数SOAP请求将无法工作。可能是更 正确 使用的标头(但weatherservice更喜欢 这将以xml字符串形式返回响应-然后,您需要解析该xml。 为简单起见,我以纯文本形式包含了该
问题内容: 我正在尝试向SOAP Web服务发送请求。我阅读了本教程并准备了以下代码。但是,我将向多个SOAP Web服务发送不同的请求,而本教程只关注一个请求。如何使用发送SOAP请求? WebServiceTemplate 问题答案: 您可以使用以下代码,而无需在xml文件中定义任何内容。
我需要使用gRPC从不同类型但语义相关的服务器获取一些数据。你可以把它看作是一个数据类型,可以有a、B和C。我在想,将这些数据传输到客户机的正确方法是什么。我个人可以想出三种不同的方法: 使用带有的单个消息: 在这个方法中,我只定义了一条消息,如下所示: 现在我只添加了一个rpc方法,它可以获取不同类型的数据。这种方法的问题是可扩展性。我将无法通过向此处所述的添加新的消息类型来更新我的消息(或者至
好的,我对网络服务完全陌生,对于我正在做的一个项目,我试图了解整个SOAP。我想我对正在发生的事情有一个模糊的理解,但是我缺少一些具体的信息,我在谷歌上找不到任何有用的东西。 我已经阅读了其他人提出的问题,例如使用java向Web服务发出的SOAP请求,但我仍然无法完全弄清楚发生了什么。 具体来说,我尝试使用这里提供的服务http://ec.europa.eu/taxation_customs/v
我从来没有用过肥皂。我搜索了一下,找到了一些例子。 我的目标是发送这样的肥皂请求 有人能告诉我如何发送这样的肥皂请求吗?或者给我一个例子或教程来发送这样的肥皂。谢谢大家。
我用的是Spring靴。我已经为SOAP web服务编写了一个ClientInterceptor,我想记录我要向其发送请求的URL,并且我想在HandlerResponse方法中这样做。然而,我找不到一个方法来做到这一点。有可能吗?任何帮助都会很好。 创建restTemplate的方式