我的客户要求我将第三方API集成到他们的Rails应用程序中.唯一的问题是API使用SOAP.Ruby基本上放弃了SOAP,转而使用REST.它们提供了一个显然适用于Java-Ruby桥接器的Java适配器,但是如果可能的话,我们希望将它全部保存在Ruby中.我看了一下soap4r,但它的名声似乎有些不好.
那么将SOAP调用集成到Rails应用程序的最佳方法是什么?
我已经使用JAXWS-RI 2.1基于WSDL为我的Web服务创建了一个接口.我可以与Web服务进行交互没有问题,但是无法指定向Web服务发送请求的超时.如果由于某种原因它没有响应客户端似乎永远旋转它的轮子.
狩猎已经显示我应该尝试做这样的事情:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
Run Code Online (Sandbox Code Playgroud)
我还发现,根据您拥有的JAXWS-RI版本,您可能需要设置这些属性:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,无论上述哪一项是正确的,我都不知道我能在哪里做到这一点.我所拥有的只是一个Service子类,它实现了自动生成的webservice接口,并且实现了这一点,如果WSDL没有响应,那么设置属性已经太晚了:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
Run Code Online (Sandbox Code Playgroud)
任何人都能指出我正确的方向吗?!
在php_info()保存WSDL缓存的地方(/tmp),但我不一定知道从WSDL开始删除所有文件是否安全.
是的,我应该能够删除所有内容/tmp,但我不知道如果删除任何所有WSDL文件,这会产生什么影响.
我从来没有真正理解为什么Web服务实现者会选择一个而不是另一个.XML-RPC通常在旧系统中找到吗?任何帮助理解这一点将不胜感激.
我需要对https://sandbox.mediamind.com/Eyeblaster.MediaMind.API/V2/AuthenticationService.svc?wsdl进行SOAP webservice调用,并在传递参数时使用ClientLogin操作:ApplicationKey,Password和UserName .响应是UserSecurityToken.它们都是字符串.
以下是完全解释我要做的事情的链接:https: //sandbox.mediamind.com/Eyeblaster.MediaMind.API.Doc/?v = 3
我怎么能在命令行上执行此操作?(Windows和/或Linux会很有帮助)
我目前发现类似的是使用互联网协议(HTTP)在消费者和提供者之间交换数据.
不同之处是:
这就是我所知道的他们之间的差异.任何人都可以纠正我并添加更多.
我在JAX-WS中设置了一个SOAP WebServiceProvider,但是我无法弄清楚如何从SOAPMessage(或任何Node)对象中获取原始XML.这是我现在获得的代码示例,以及我在尝试获取XML的地方:
@WebServiceProvider(wsdlLocation="SoapService.wsdl")
@ServiceMode(value=Service.Mode.MESSAGE)
public class SoapProvider implements Provider<SOAPMessage>
{
public SOAPMessage invoke(SOAPMessage msg)
{
// How do I get the raw XML here?
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来获取原始请求的XML?如果有办法通过设置不同类型的Provider(例如Source)来获取原始XML,我也愿意这样做.
我在网上搜索了一个现有的,支持Python 3的 SOAP库.(客户端和服务器)
这里是我找到的库列表:
Python 2:
Python 3:
这个列表对你来说似乎完整吗?(仅供参考,我使用这篇文章作为起点(该帖子的目的是相同的,但对于Python 2而言))
Ladon在我看来是Python 3唯一现有的框架,但AFAIK只能用于实现服务器端.
NO:我不想自己迁移其中一个已停产的Python 2项目.我正在寻找一个受支持的项目,如果需要,我们会派出一个积极的团队提
更新于28/09/2013
是否可以根据WSDL中的信息查看Web服务是否使用SOAP 1.1或1.2?