基于W3的WSDL规范,可以将"wsdl:document"标记添加到WSDL输出中,以便使用该Web服务的人员可以更好地解释/记录此Web服务.
有没有人知道如何让WCF使用这些注释/描述,或者如何在C#中编写那些注释作为wsdl的一部分导出的代码?
谢谢,迈克尔
我用soapui测试了我的Web服务(wsdl/soap).我有错误:http/log:错误400 BAD REQUEST.
请问我的wsdl可能有什么错误?
错误/日志:
un Jun 05 14:10:37 CEST 2011:ERROR:javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlInterfaceDefinition.load(WsdlInterfaceDefinition.java:48)
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.java:66)
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.java:30)
at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.cacheDefinition(AbstractDefinitionContext.java:264)
at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.access$400(AbstractDefinitionContext.java:44)
at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext$Loader.construct(AbstractDefinitionContext.java:230)
at com.eviware.soapui.support.swing.SwingWorkerDelegator.construct(SwingWorkerDelegator.java:46)
at com.eviware.soapui.support.swing.SwingWorker$2.run(SwingWorker.java:140)
at java.lang.Thread.run(Thread.java:637)
Run Code Online (Sandbox Code Playgroud) 在我的wsdl中,我有一个元素:
<xsd:element minOccurs="0" name="birthDate" nillable="true" type="xsd:dateTime"/>
Run Code Online (Sandbox Code Playgroud)
我知道nillable true允许空值这是否意味着它可以允许xml空标记?即
<birthDate/>
Run Code Online (Sandbox Code Playgroud) 我最近听说过WSDL.Exe,但我不知道在哪里可以找到这个程序.有谁知道我在哪里可以找到或下载它?
如果在多个Web服务中使用了相当大的模式,那么我想将XSD编译与WSDL编译分开.在一个简化的示例中,单步编译的工作原理如下:
$ wsimport -verbose service.wsdl
parsing WSDL...
Generating code...
org/example/wsdl/mysvc/MySvcPortType.java
org/example/wsdl/mysvc/MySvcService.java
org/example/ns1/Element1.java
org/example/ns1/ObjectFactory.java
org/example/ns1/package-info.java
...
Run Code Online (Sandbox Code Playgroud)
编译xsd并使用生成的剧集文件不起作用:
$ wsimport -b schema3.episode service.wsdl
parsing WSDL...
[ERROR] Schema descriptor {http://www.example.org/ns1}element1 in
message part "part1" is not defined and could not be bound to Java.
Perhaps the schema descriptor {http://www.example.org/ns1}element1 is
not defined in the schema imported/included in the WSDL. You can
either add such imports/includes or run wsimport and provide the
schema location using -b switch. line 9 of
file:...jaxepisode_element/service.wsdl
Run Code Online (Sandbox Code Playgroud)
那么如何在wsimport中使用预编译的模式呢?
附录:当包含在另一个模式中时使用该剧集并避免新的编译(d3.jar包含来自schema3 + …
我向我的客户提供了一个小型Web服务API,我计划随着时间的推移而发展.所以我需要某种版本控制,但我找不到任何关于你是如何做这样的事情的信息.
有最好的做法吗?
如何在不破坏与Web服务使用者的兼容性的情况下继续添加新功能?
我想从WSDL文件生成Web服务类.我希望服务器端代码不是客户端.wsimport创建客户端.您使用哪个工具从WSDL文件创建服务器端代码?
我无法使用PHP连接到Magento SOAP API v2.发生的错误是:
PHP致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从' http://www.example.com/index.php/api/v2_soap/index/wsdl/1/ ' 加载:无法加载外部实体" http://www.example.com/index.php/api/v2_soap/index/wsdl/1/ "
看起来,正在加载WSDL,但它不包含外部SOAP文件.
PHP连接代码:
$client = new SoapClient('http://www.example.com/api/v2_soap?wsdl=1');
$session = $client->login('username', 'password');
Run Code Online (Sandbox Code Playgroud)
从v2_soap剪切?wsdl = 1文件:
<service name="MagentoService">
<port name="Mage_Api_Model_Server_V2_HandlerPort" binding="typens:Mage_Api_Model_Server_V2_HandlerBinding">
<soap:address location="http://www.example.com/index.php/api/v2_soap/index/"/>
</port>
</service>
Run Code Online (Sandbox Code Playgroud)
Magento版本是1.5.1.0.
我想问你如何在WSDL文件的基础上以XML格式生成SOAP请求/响应.目标平台是JVM,因此可以使用多种语言(例如Java,Scala,Groovy,JRuby,Jython等).SOAP请求/响应生成应该完全在XML级别上完成,而不需要任何类生成和类加载(在这种情况下,WSDL2Java,JAXB或类似方法是不合适的).应该使用开源组件以编程方式完成生成.生成技术应该支持document-literal,rpc-encoded和rpc-literal风格,因此生成器应该处理参数的正确编码.请求/响应消息应该是完全填充的 - >即使对于空/空值,也应生成空节点.
长话短说 - >我想以编程方式完成SoapUI IDE中可行的事情.我已经看过不同的Java相关库/框架(SAAJ,WSDL4J)或Ruby(Savon),但我正在努力进一步推动它.
我正在处理的示例Web服务定义(WSDL和XSD)是
stockquote-ws.wsdl和stockquote-schema.xsd.
我想做的是:
SoapMessageGenerator generator = new SoapMessageGenerator("stockquote-ws.wsdl");
String request = generator.generateSoapRequest();
String response = generator.generateSoapResponse();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,请求应如下所示:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://centeractive.com/stockquote.wsdl" xmlns:stoc1="http://centeractive.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:GetLastTradePrice soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<stoc1:TradePriceRequest>
<tickerSymbol xsi:type="xsd:string">?</tickerSymbol>
</stoc1:TradePriceRequest>
</stoc:GetLastTradePrice>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
......而响应应如下所示:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://centeractive.com/stockquote.wsdl" xmlns:stoc1="http://centeractive.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:GetLastTradePriceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<stoc1:TradePrice>
<price xsi:type="xsd:float">?</price>
</stoc1:TradePrice>
</stoc:GetLastTradePriceResponse>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud) 我在Web服务和KSoap库方面遇到的问题很少.我在询问之前搜索了这个主题,却找不到任何东西.
这是一个问题:我有一个像http://www.anyting.com/bulkService.wsdl这样的网址,但我没有任何关于它的文档.我可以确定仅检查wsdl文件的METHOD NAME和NAMESPACE参数.示例:http://www.webservicex.net/isbn.asmx?WSDL
如果可能,我在哪里可以找到发送请求的方法参数.
我正在使用Android Project,所以我使用KSoap2,我需要METHOD NAME和NAMESPACE.
小问题:myservice.wsdl url 是否与myservice.asmx相同?WSDL
感谢您的支持..
编辑#1:我花了很多时间,我得到了正确的参数:
METHOD_NAME: Web服务可能有多种方法.如果找不到有关Web服务的文档,可以在wsdl中搜索方法名称.如果您的Web服务扩展名是.asmx,那么您的wsdl就像../services/service.asmx?wsdl.打开wsdl文件并搜索"操作名称",这个参数就是你的方法.选择要使用的内容.
NAMESPACE:打开你的wsdl并搜索"targetNamespace".此参数是您的NAMESPACE参数.
SOAP_ACTION:此参数由Method Name和Namespace组成.像String SOAP_ACTION = NAMESPACE + METHOD_NAME一样使用它;