我在我们的一台服务器上的Windows服务中托管WCF服务.在使用basicHttpBinding并在.NET中构建测试客户端(最终工作)后,我继续尝试使用SoapClient类从PHP访问它.最终的消费者将是一个PHP站点,所以我需要在PHP中使用它.
当我必须在PHP代码中的SoapClient类的构造函数中输入WSDL url时,我感到难过.WSDL在哪里?我只有:
http://172.27.7.123:8000/WordService和 http://172.27.7.123:8000/WordService/mex
这些都不会暴露WSDL.
作为WCF的新手,我可能会问一个愚蠢的事情(或者我可能在某处有错误的假设).请温柔:D
不,http://172.27.7.123:8000/WordService?wsdl没有显示任何不同于http://172.27.7.123:8000/WordService :(
我被迫在IIS中托管它吗?我是否被迫使用常规WebService?
我的团队的任务是获得几个内部开发的.NET客户端应用程序,以连接到一些新的Java Web服务.Java Web服务是第三方,供应商提供的WSDL文件,我们的团队具有有限的修改/控制能力......这意味着我们可能有权要求我们的供应商对WSDL进行轻微调整,但可能会有重大改变要么不可行,要么难以提出要求.
也就是说,我们正在尝试利用WCF/.NET 4.0生成客户端所需的.NET代理类文件.代理客户端类文件生成过程执行没有问题.
问题是当我们尝试在客户端应用程序中使用代理类文件时.我已经通过Web跟踪工具Fiddler验证了原始SOAP消息请求无法通过线路发送到服务器.
尝试调用有问题的Web服务方法时,我得到的特定.NET异常消息如下所示:
System.InvalidOperationException未处理Message = XmlSerializer属性System.Xml.Serialization.XmlAttributeAttribute在baseLanguage中无效.当IsWrapped为true时,仅支持XmlElement,XmlArray,XmlArrayItem,XmlAnyAttribute和XmlAnyElement属性.来源= System.ServiceModel
当我检查.NET自动生成的代理类文件Reference.cs时,我注意到我的Web服务方法的请求和响应消息看起来像这样:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.MessageContractAttribute(WrapperName="QueryPBOT_MXWO_OS", WrapperNamespace="http://www.ibm.com/maximo", IsWrapped=true)]
public partial class QueryPBOT_MXWO_OSRequest {
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=0)]
public ConsoleApplication7.wsMaximo.PBOT_MXWO_OSQueryType PBOT_MXWO_OSQuery;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=1)]
[System.Xml.Serialization.XmlAttributeAttribute()]
public string baseLanguage;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=2)]
[System.Xml.Serialization.XmlAttributeAttribute()]
public string transLanguage;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=3)]
[System.Xml.Serialization.XmlAttributeAttribute()]
public string messageID;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=4)]
[System.Xml.Serialization.XmlAttributeAttribute()]
public string maximoVersion;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=5)]
[System.Xml.Serialization.XmlAttributeAttribute()]
[System.ComponentModel.DefaultValueAttribute(false)]
public bool uniqueResult;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=6)]
[System.Xml.Serialization.XmlAttributeAttribute(DataType="positiveInteger")]
public string maxItems;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.ibm.com/maximo", Order=7)]
[System.Xml.Serialization.XmlAttributeAttribute(DataType="integer")]
[System.ComponentModel.DefaultValueAttribute("0")]
public string rsStart;
public QueryPBOT_MXWO_OSRequest() {
}
public QueryPBOT_MXWO_OSRequest(ConsoleApplication7.wsMaximo.PBOT_MXWO_OSQueryType PBOT_MXWO_OSQuery, string …Run Code Online (Sandbox Code Playgroud) 我已经获得了一些有关ASP Web API的信息.它看起来像好东西的Web服务,但如何建立像WSDL对我的API像WCF服务呢?3d party组件如何使用我的服务?或者我需要手动描述我的每个方法?
我想从<Version>嵌套在<service>WSDL块中的元素中获取文本.有问题的WSDL是Ebay的交易 api.有问题的片段看起来像这样:
<wsdl:service name="eBayAPIInterfaceService">
<wsdl:documentation>
<Version>941</Version>
</wsdl:documentation>
<wsdl:port binding="ns:eBayAPISoapBinding" name="eBayAPI">
<wsdlsoap:address location="https://api.ebay.com/wsapi"/>
</wsdl:port>
</wsdl:service>
Run Code Online (Sandbox Code Playgroud)
我现在正在这样做:
$xml = new DOMDocument();
$xml->load($this->wsdl);
$version = $xml->getElementsByTagName('Version')->item(0)->nodeValue;
Run Code Online (Sandbox Code Playgroud)
这有效,但我想知道是否有一种方法可以使用PHP的SOAP扩展本地获取它?
我在想以下内容会起作用,但事实并非如此:
$client = new SoapClient($this->wsdl);
$version = $client->eBayAPIInterfaceService->Version;
Run Code Online (Sandbox Code Playgroud) 任何人都可以推荐一个好的(最好是开源的)工具来为一些soap web服务创建WSDL文件吗?
我已经尝试过使用一些可用的eclipse插件,并且对我发现的内容印象不深.
我正在尝试在.NET 3.5中构建一个支持SOAP的C#服务 - 并显示WSDL和REST.
SOAP服务和WSDL生成很容易使用ServiceHost和BasicHttpBinding类.得到了工作,客户很高兴.
由于SOAP调用所有使用的简单参数,因此客户端开发人员为某些命令请求了REST接口.所以我改变了的ServiceHost类的WebServiceHost,根据需要添加WebInvoke和WebGet属性,增加了一个WebHttpBinding班,和宾果- REST和SOAP进行了两个工作了一个服务.很酷,改变一个界面,REST和SOAP都得到了新的东西.
但是有一个问题 - 不再生成WSDL.我无法浏览到http:// server/service?wsdl并获取WSDL文件.检查MSDN文档,这似乎是默认行为WebServiceHost.
问题:我可以覆盖此行为以便可以获取WSDL吗?没有与以前相同的URL - 它可以更改 - 但我只需要在服务中使用一些URL来为这些SOAP开发人员获取WSDL.
我无法打开元数据网址http://localhost:8082/Tasks/mex,即使我在配置文件中添加了mexHttpBinding.我可以在浏览器中查看此MEX端点吗?
配置文件如下所示:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
Run Code Online (Sandbox Code Playgroud)
问题:
我需要在ruby中为一次调用实现一个soap服务器,并提供一个WSDL.我的计划是自己创建WSDL,并在rails服务器上提供解析xml的端点.
这是一条有效的道路吗?我看起来并且找不到关于生成WSDL的ruby中的soap服务器的其他信息.Action Web Service确实在2005年更新,而soap4r独立服务器不生成WSDL.
我在创建Java客户端并将其连接到正在运行的Web Service时遇到问题.
我使用以下代码:
Service myService = null;
URL wsdlLocation = new URL("http://myservice?wsdl");
QName serviceName = new QName(wsdlLocation, "MyService");
Service myService = new Service(wsdlLocation, serviceName);
Run Code Online (Sandbox Code Playgroud)
使用以下命令创建Service类的位置:
wsimport -d gen -keep http://myservice?wsdl
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用Apache cxf 2.4的wsdl2java生成的客户端,但得到了相同的结果.
(我已经在我使用原始代码的代码中更改了此帖子的WSDL位置和服务类名称.)
但是当我使用新的Service()命令创建服务时,我在appserver上调用Web Service时遇到异常.但是:我用SOAP UI测试了wsdl位置,它运行得很好.此外,我使用Soap UI创建了一个模拟服务,我的Java客户端可以连接到它,调用它并获得结果.当我想要调用在appserver上运行的Web服务时,会出现问题.
堆栈跟踪:
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
at javax.xml.ws.Service.<init>(Service.java:76)
at MyService.<init>(MyService.java:42)
at mypackage.createService(AClass.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
... 12 more …Run Code Online (Sandbox Code Playgroud) 我在eclipse中使用Tomcat 7服务器和Axis 2 1.7运行时.
我有一个在Axis 2中生成的WSDL文件.
因此,请使用Topdown方法生成Web服务类(骨架).我在服务器运行时选择了配置为Axis.当尝试单击完成时,它显示以下错误:" 在WSDL的代码生成期间发生异常:java.lang.NoClassDefFoundError:org/apache/ws/commons/schema/utils/NamespacePrefixList "
我认为这是一个罐子小姐,所以我首先包括XmlSchema-1.4.2.jar错误尚未解决.所以我删除了那个jar并尝试使用从java2s下载的最新jar(xmlschema-core-2.0.1.jar).我还有同样的问题.
请帮我解决这个问题.
尝试在eclipse中从WSDl创建客户端时,同样的问题也会持续存在.
请帮我用步骤来解决这个问题.谢谢