Tag: soap

如何从Java中的SOAP响应中提取数据?

我有一个客户端设置为向国家气象服务SOAP服务器发送请求。 我收到了我期望的回复,但我不确定从我需要的数据中提取数据的最佳方法。 例如,XML中存在大量额外数据(在SOAPBody中),但我只想获取我设置的参数(例如温度)的数据到我的POJO。 提取此数据的最佳方法是什么?

使用paypal api时无法建立SOAP连接

我正在尝试使用paypal soap客户端,并使用Paypal Express Checkout和Java参考执行setExpressCheckout方法。 所以这里我只使用paypal-base.jar和paypal-stubs.jar而不是soap客户端(从wsdl生成)。 public class SetExpressCheckoutService{ private static Logger log = Logger.getLogger(SetExpressCheckoutService.class); public static void main(String[] args){ SetExpressCheckoutService setExpressCheckoutService = new SetExpressCheckoutService(); //the parameters for the service Long userId = 5l; String amount = “25”; String returnURL = “http://localhost:8080/integratingstuff-paypal/return_after_payment.xhtml”; String cancelURL = “http://localhost:8080/integratingstuff-paypal/cancel_payment.xhtml”; PaymentActionCodeType paymentAction = PaymentActionCodeType.Sale; CurrencyCodeType currencyCode = CurrencyCodeType.EUR; try { […]

运行axis2客户端版本1.5

所以我试图让客户端连接到我正在通过axis2运行的SOAP服务。 我尝试了两种方法,一种是使用wsdl2java来构建存根和关联的客户端类,然后编写一个Client类来构建请求消息并通过Stub发送它们。 另一种方法是使用ServiceClient连接.. 两者都以自己的方式失败了.. 选项#1,每次通过存根发送消息时我都会回复: org.apache.axis2.AxisFault: The input stream for an incoming message is null. at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:87) at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 选项#2,每次我运行它我得到这个例外: org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender 选项#2来源: import javax.xml.stream.XMLStreamException; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.Constants; import org.apache.axis2.client.ServiceClient; public class loyaltyClient { private static […]

如何将JAVAX-WS Endpoint绑定更改为SOAP 1.2?

我正在使用Endpoint.publish()发布测试WS实现,以便在Visual Studio中使用。 根据文档 ,默认的SOAP绑定是1.1 ,并且可以更改绑定,但我无法具体弄清楚如何将绑定更改为1.2 。 任何帮助表示赞赏!

CXF客户端SOAP消息格式化

我用来创建CXF客户端的WSDL文件具有以下元素定义: 但是,当我尝试发送SOAP消息时,小数点后的位数超过最大值。 例如,我得到2.48862而期望2.48。 为了解决这个问题,我计划实现一个XmlAdapter来编组值,但是我无法将WSDL中的元素映射到客户端,因为XmlAdapter的onyl类作为注释传递给字段decleration。 @XmlJavaTypeAdapter(CustomXmlAdapter.class) 似乎没有办法通知XmlAdapter该字段在小数点后必须有2位数。 小数位数从元素到元素的变化。 我也没有权限来更改WSDL。 有没有办法在观察WSDL中指定的小数点数时格式化这些元素?

CXF客户端exception:{XXX}的拦截器抛出exception,现在展开

我遇到以下CXFexception: warning: Interceptor for {http://example.com/wsdl/esc/2011-12-12/}AmazonEC2#{http://example.com/wsdl/esc/2011-12-12/}NewDescribeImages has thrown exception, unwinding now java.lang.NullPointerException at org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor.handleMessage(StartBodyInterceptor.java:59) at org.apache.cxf.binding.soap.interceptor.StartBodyInterceptor.handleMessage(StartBodyInterceptor.java:37) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:762) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1582) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1467) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1375) at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:623) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:510) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:343) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:295) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at $Proxy31.newDescribeImages(Unknown Source) at test.App.main(App.java:62) javax.xml.ws.soap.SOAPFaultException: […]

用于单个应用程序的REST和SOAP Web服务

我们使用Spring构建应用程序并使用Tomcat部署它。 我们有一个有效的REST接口,但是我们的一个客户端只有一个SOAP客户端。 我的理解是SOAP Web服务和REST Web服务不能在同一个端口或应用程序上共存。 我可以选择尽可能少地接受SOAP请求。 我应该通过rest接口接受soap数据包并解析XML吗? 或者我可以设置SOAP接口与我的REST接口通信并回复? 我正在使用Gradle作为我的构建工具。 将解决方案作为单个WAR文件的一部分会很好

使用Maven从WSDL生成Java时指定包名称

我正在使用maven脚本生成我需要与WCF服务通信的Java代码。 我已经进行了沟通工作,并准备将我的maven脚本及其生成的代码与项目中的其余Java代码集成。 但是,我无法让maven生成具有我想要的正确包名的代码。 从我在网上看到的,我应该使用标签,我已经看到了两个可能的地方。 我已经包含了我认为需要进入的脚本部分,并且它们都存在。 但是,这些标记不会产生任何影响,代码生成就像没有它们一样 org.apache.cxf cxf-codegen-plugin ${cxf.version} com.name.server.cxf src/com/server/cxf src/com/server/cxf/code-generation/service.xml src/com/server/cxf/code-generation/javabindings.xml -validate -client -verbose -xjc-verbose generate-sources generate-sources wsdl2java com.name.server.cxf 也许我使用的是错误的标签,或者它可能是在错误的地方?

使用NTLM到SharePoint的CXF SOAP客户端

我正在使用适用于SharePoint 2007的CXF Framework(版本:2.7.8)编写SOAP客户端。我已经按照联机文档在此处添加了NTLM支持。 我让客户端工作并跟踪HTTP会话显示正在发送NTLM凭据,但是,我仍然收到401 Unauthorized响应。 码: Lists listService = new Lists(); ListsSoap port = listService.getListsSoap(); BindingProvider bp = (BindingProvider) port; bp.getRequestContext().put(“use.async.http.conduit”, Boolean.TRUE); Credentials creds = new NTCredentials(USER, PASS, “”, DOMAIN); bp.getRequestContext().put(Credentials.class.getName(), creds); Client client = ClientProxy.getClient(proxy); HTTPConduit http = (HTTPConduit) client.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(36000); httpClientPolicy.setAllowChunking(false); httpClientPolicy.setAutoRedirect(true); http.setClient(httpClientPolicy); // Build request and execute […]

在自定义拦截器中捕获SOAP Fault错误(Soap12FaultOutInterceptor)

我编写了一个自定义CXF拦截器来将所有SOAP请求和响应记录到数据库中,它似乎与正面测试用例和服务器错误一起正常工作。 但是当发生SOAP Fault时,它只是忽略了我的拦截器而没有记录任何内容。 自定义CXF拦截器。 public class DbLogOutInterceptor extends AbstractSoapInterceptor { public void handleMessage(SoapMessage message) { logger.info(“Handling outbound request”); String transaction = MDC.get(mdcKey); logger.info(“OutBound Transaction ID : {} “, transaction); //code to log the SOAP message in database ……. } } 我没有看到这种方法的日志语句 11:56:34,102 INFO [Soap12FaultOutInterceptor] class org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptor Internalapplication/soap+xml 11:56:34,103 INFO [EligibilityInfo] Outbound Message ————————— ID: 2 […]