我没有任何与Web服务相关的开发经验.所以,任何想法将不胜感激.
假设,我有一个文件列出了WSDL操作的草案规范.以下是一个例子.我将如何创建WSDL文件.记事本是否足够,还是需要WSDL编辑器?
getHostSystemInfo
Run Code Online (Sandbox Code Playgroud)
返回有关通过给定ID指定的主机系统的详细信息.
我正在尝试使用eclipse Galileo和Windows xp上的轴2 1.4从本地WSDL文件生成代理类.我的问题是由于WSDL中导入的模式而导致错误.困扰我的那条线是:
<xsd:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/>
Run Code Online (Sandbox Code Playgroud)
我试过运行wsdl2java以下命令:
wsdl2java.bat -uri SOAService.wsdl -o D:\temp p test -d xmlbeans -a -s -ns2p -uw
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: Error parsing WSDL
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
ionEngine.java:156)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:ty
pes/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve sche
ma referenced at 'http://www.w3.org/2005/05/xmlmime', relative to 'file:/D:/Prog
rammi/axis2-1.4/bin/SOAService.wsdl'.: java.net.ConnectException: Connection tim
ed out: connect
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseTypes(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2008中,我有一个类库项目(称为Media),我向第三方Web服务(wsdl)添加了Web引用(而不是服务引用).在类库项目中,创建了一个代理类,用于使用该服务以及该服务中使用的类型的几个类.
我还有第二个类库(称为同步),引用第一个.然后我有一个引用第二类库的Web站点项目.所有这些都是.NET 3.5
所以网站>类库(同步)>类库与Web服务引用(媒体)
我想进入生成的代码,因此我在IIS 7.5中启动网站并触发对第二类库(Sync)中的方法的调用,而该方法又应该调用Web服务代理.我完全期待达到断点,但却得到了一个例外:
无法生成临时类(result = 1).错误CS0029:无法将Media.WebService.multiValuedAttribute类型隐式转换为Media.WebService.multiValuedAttribute []
为什么ASP.NET试图生成临时类?我是否已经从第一个类库(媒体)中获得了生成的类?它试图产生什么样的课程?
谢谢!
我正在使用带有F#的VS.NET 2010集成shell,我正在尝试使用soap Web服务......如何生成F#源代码?我试过了
wsdl l:"C:\ Program Files(x86)\ FSharpPowerPack-2.0.0.0\bin\FSharp.Compiler.CodeDom.dll" http:// localhost /?wsdl
随着
wsdl /language:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider,Microsoft.FSharp.Compiler.CodeDom,Version = 1.9.2.9,Culture = neutral,PublicKeyToken = a19089b1c74d0809"
但是我似乎无法让/ language开关工作.
编辑:
taspeotis的回答让我走了......这为Web服务生成了F#源:
gacutil -i "C:\Program Files (x86)\FSharpPowerPack-2.0.0.0\bin\FSharp.PowerPack.dll"
svcutil /language:"Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider, FSharp.Compiler.CodeDom, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a19089b1c74d0809" http://localhost/?wsdl
Run Code Online (Sandbox Code Playgroud) 我正在使用Axis2 1.5.1(wsdl2java)从给定的WSDL文件生成代码(客户端存根).
Web服务由外部应用程序提供.
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
xmlns:tns="http://tempuri.org/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:i0="http://schemas.microsoft.com/ws/2005/02/mex/bindings"
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsa10="http://www.w3.org/2005/08/addressing"
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
name="service" targetNamespace="http://tempuri.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication0.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication1.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication2.xsd" />
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication3.xsd" />
</xsd:schema>
</wsdl:types>
...
</wsdl:definition>
Run Code Online (Sandbox Code Playgroud)
RemoteApplication0.xsd的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/Message"
elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/Message"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="MessageBody">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
命令行:
wsdl2java -ss -g -d adb -or -p com.sampleapp.ws.generated.client -uri SampleRemoteProcess.wsdl
Run Code Online (Sandbox Code Playgroud)
生成过程会导致异常.
堆栈跟踪:
Using AXIS2_HOME: …
Run Code Online (Sandbox Code Playgroud) 我正试图在我的公司内拨打远程网络服务.出于专有原因,我无法提供Web服务的URL.Web服务有一个名为getItemField的函数.这是一个小型测试服务,我正在尝试运行PHP,服务描述如下:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://www.oracle.com/ws/MyFirstWebService" xmlns:intf="http://www.oracle.com/ws/MyFirstWebService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://www.w3.org/1999/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.oracle.com/ws/MyFirstWebService">
<!--
WSDL created by Apache Axis version: 1.2alpha Built on Oct 23, 2007 (12:09:54 IST)
-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.oracle.com/ws/MyFirstWebService">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ArrayOf_xsd_string">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</wsdl:types>
<message name="getItemFieldRequest">
<part name="args" type="impl:ArrayOf_xsd_string"/>
</message>
<message name="getItemFieldResponse">
<part name="getItemFieldReturn" type="soapenc:string"/>
</message>
<portType name="MyFirstWebService">
<operation name="getItemField" parameterOrder="args">
<input message="impl:getItemFieldRequest" name="getItemFieldRequest"/>
<output message="impl:getItemFieldResponse" name="getItemFieldResponse"/>
</operation>
</portType>
<binding name="MyFirstWebServiceSoapBinding" type="impl:MyFirstWebService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getItemField"> …
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个肥皂服务,我想测试.但我不想创建一个肥皂客户端来测试它.我正在寻找一些工具,它可以解析wsdl并给出可以输入的参数列表,然后给出肥皂的响应服务.
我知道肥皂熊猫,但它不起作用,说无效的网址,因为我的肥皂服务网址中有一个连字符.
SoapUi的尺寸非常大.我想要一个我可以轻松下载的小工具
soapclient是一个Web工具,但它已关闭.
请建议一些替代工具
如果我在WCF服务中只使用简单的方法,一切正常.但是,如果我包含以下方法,则会出现问题:
[OperationContract]
public List<KeyValuePair<string, string>> GetAllAccounts()
{
return AccountBusiness.GetAllAccounts();
}
Run Code Online (Sandbox Code Playgroud)
从其他项目引用服务时出现此错误:
警告5自定义工具警告:无法导入wsdl:portType详细信息:运行WSDL导入扩展时抛出异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter错误:类型'Newtonsoft.Json.Linq.JToken'是一个递归收集数据合同,不受支持.考虑修改集合'Newtonsoft.Json.Linq.JToken'的定义以删除对它自己的引用.XPath到错误源:// wsdl:definitions [@ targetNamespace =' http://tempuri.org']/wsdl:portType [@ name ='NodeService'] C:\ inetpub\wwwroot\MyclientProject\Service References\NodeService\Reference.svcmap 1 1 MyClientNode
如果我删除上面的方法,重新编译并更新引用,那么它工作正常.但是当我添加上述方法时,我始终会收到此警告.
我发现的一个建议是卸载Visual Studio 2012并修复Visual Studio 2010.我不想这样做.
另一个建议取消选中"在所有引用的程序集中重用类型",但这会弄乱方法签名并且不可用.
我正在导入第三方提供的WSDL.但是我没有成功使用delphi WSDL导入器.当我导入WSDL时,delphi WSDL导入器隐藏了WSDL文件中的类的实现.WSDL文件包含一些接受对象作为参数的函数.导入WSDL之后delphi会出现错误,因为某些变量是未声明的,它们实际上是类的对象,其定义由WSDL导入器隐藏.
我想知道是否可以使用Spring Web Services从WSDL文件创建Web服务客户端.
我的意思是从WSDL开始,我暂时没有任何XSD.
但我已经阅读了Josh Long的"Spring Recipes A Problem-Solution Approach",Hamidreza Sattari的"Spring Web Services 2 Cookbook"和教程本身(6.在客户端使用Spring Web Services),并没有提及此功能.
我还读过其他帖子,比如Webservice-Client:Spring WS,JAXB和一个WSDL文件的常用方法?或来自WSDL的Spring-ws客户端(此处为stackoverflow)但没有任何进一步的结果.
我甚至在Spring论坛上提出了这个问题,但是在超过60次读取之后没有回复:是否可以使用SWS从WSDL文件创建WS-client?(似乎没有)
也许这是不可能的.
谢谢.