标签: wsdl

使用Amazon Web Services WSDL的最佳python soap堆是什么?

Python有许多肥皂堆 ; 尽可能地说,所有都有很多缺陷.

有没有人运气消耗在Python中使用WSDL for S3,EC2和SQS?

我的经验是在构造Client对象时suds失败了; 经过一番争吵之后,ZSI会生成不起作用的客户端代码; 等等

最后,我知道boto,但因为它是围绕AWS的手动包装器,它是(1)不完整的,(2)永远不会与最新的AWS WSDL保持同步.

python soap wsdl amazon amazon-web-services

14
推荐指数
1
解决办法
2564
查看次数

你能帮我解决这个SUDS/SOAP问题吗?

所以我试图使用SUDS 访问这个api https://www.clarityaccounting.com/api-docs/.这是应该工作的代码:

from suds.client import Client
client = Client('https://www.clarityaccounting.com/api/v1?wsdl')
token = client.service.doLogin('demo', 'demo', 'www.kashoo.com', 'en_US', 300000)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

WebFault: Server raised fault: 'No such operation:  (HTTP GET PATH_INFO: /api/v1)'
Run Code Online (Sandbox Code Playgroud)

他们的支持人员说请求应该如下所示:

<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:api="http://api.service.books/">
  <SOAP-ENV:Body>
     <api:doLogin>
        <username>demo</username>
        <password>demo</password>
        <siteName>www.kashoo.com</siteName>
        <locale>en_US</locale>
        <duration>300000</duration>
     </api:doLogin>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

但是SUDS'看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
xmlns:ns0="http://api.service.books/" 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns0:doLogin>
         <username>demo</username>
         <password>demo</password>
         <siteName>www.kashoo.com</siteName>
         <locale>en_US</locale>
         <duration>300000</duration>
      </ns0:doLogin>
   </ns1:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我是一个真正的SOAP和SUDS新手,但我听说SUDS是从这里使用的最好的SOAP库:Python存在哪些SOAP客户端库,它们的文档在哪里?

所以我的问题是什么是不同的关键部分,使请求失败,如何配置SUDS发送格式正确的请求?

python soap wsdl suds

14
推荐指数
1
解决办法
2万
查看次数

WSDL中的可选消息部分

在我的wsdl:消息中,我有两个参数,firstname和lastname:

<message name="setName">
  <part name="firstname" type="xsd:string"></part>
  <part name="lastname" type="xsd:string"></part>
</message> 
Run Code Online (Sandbox Code Playgroud)

我想根据需要定义"firstname"部分,并将"lastname"部分定义为可选.我怎么做?

soap wsdl

14
推荐指数
2
解决办法
8406
查看次数

不支持SOAP编码

我有WSDL以下格式的网址,似乎是正确的.使用后,wsimport在终端解析,我得到一个错误:

从终端运行:

tux-world@alachiq:~/Desktop/Project/java > wsimport -keep -s wsdl/ example.com/wsdl/wsdl.php?wsdl
parsing WSDL...


[ERROR] "Use of SOAP Encoding is not supported. 
SOAP extension element on line 59 in example.com/wsdl/wsdl.php?wsdl has use="encoded" "


        Failed to parse the WSDL.
Run Code Online (Sandbox Code Playgroud)

解析的WSDL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:tsmswsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:tsmswsdl">
<types>
<xsd:schema targetNamespace="urn:tsmswsdl"
>
 <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
 <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
 <xsd:complexType name="outGetMessages">
  <xsd:complexContent>
   <xsd:restriction base="SOAP-ENC:Array">
    <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
   </xsd:restriction>
  </xsd:complexContent>
 </xsd:complexType>
</xsd:schema>
</types>
<message name="GetMessagesRequest"> …
Run Code Online (Sandbox Code Playgroud)

java soap wsdl

14
推荐指数
1
解决办法
2万
查看次数

wsimport不工作

当我尝试使用wsimport命令提示符下面的命令时,它工作正常:

wsimport -d generated C:\Users\generated\wsdlfile.xml
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用wsimport如下时,它会抛出以下错误:

wsimport -d generated https://example.com/exampleService.svc?wsdl

Failed to read the WSDL document: https://example.com/exampleService.svc?wsdl, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.

[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): At least one WSDL with at least one service definition needs to be provided.

        Failed to parse the WSDL.
Run Code Online (Sandbox Code Playgroud)

我可以从浏览器访问URL,同样的事情是从其他系统(从我的PC)开始.可能是什么原因?

wsdl wsimport

14
推荐指数
1
解决办法
2万
查看次数

如何使用类自定义来解决文件生成冲突

我试图使用Maven生成供Spring框架使用的JAXB文件,但Maven显示以下错误:

我知道它无法生成带有名称的文件,但我不知道如何解决这个问题.到目前为止,我访问了以下链接.1,2,3

org.xml.sax.SAXParseException; systemId: http://www5v80.elsyarres.net/service.asmx?wsdl; lineNumber: 5; columnNumber: 39; A class/interface with the same name "hello.wsdl.SearchFlights" is already in use. Use a class customization to resolve this conflict.
....
org.xml.sax.SAXParseException; systemId: http://www5v80.elsyarres.net/service.asmx?wsdl; lineNumber: 12; columnNumber: 43; (Relevant to above error) another "SearchFlights" is generated from here.
....
org.xml.sax.SAXParseException; systemId: http://www5v80.elsyarres.net/service.asmx?wsdl; lineNumber: 371; columnNumber: 42; A class/interface with the same name "hello.wsdl.GetFlightDetails" is already in use. Use a class customization to resolve this conflict.
....
Run Code Online (Sandbox Code Playgroud)

Maven插件 …

java spring wsdl jaxb maven

14
推荐指数
4
解决办法
3万
查看次数

java.lang.NoClassDefFoundError:wsimport上的javax/activation/DataSource Intellij java 9

我正在尝试使用JDK-9为Intellij-Idea 2017.2.5(Webservices - >从wsdl生成代码...)生成wsdl的类存根

我得到这个异常,我想知道如何告诉intellij传递"--add-modules java.activation"来完成操作.

(我想我应该从命令行运行wsimport ...)

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:461)
    at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:65)
    at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:133)
    at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:85)
    at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:156)
    at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:93)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:455)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:303)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:142)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1174)
    at com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXBContext(BindInfo.java:335)
    at com.sun.tools.xjc.reader.internalizer.SCDBasedBindingSet.apply(SCDBasedBindingSet.java:235)
    at com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:541)
    at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:269)
    at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:95)
    at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:142)
    at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2244)
    at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:191)
    at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:137)
    at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:391)
    at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:204)
    at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at com.sun.tools.ws.Invoker.invoke(Invoker.java:135)
    at com.sun.tools.ws.WsImport.main(WsImport.java:57)
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at …
Run Code Online (Sandbox Code Playgroud)

wsdl web-services intellij-idea wsimport java-9

14
推荐指数
3
解决办法
2万
查看次数

从WSDL生成JavaScript存根

我正在寻找一种从WSDL生成JavaScript存根的工具.

虽然我通常更喜欢使用带有JSON或XML的REST服务,但我目前正在集成的一些工具只能使用SOAP.

我已经用JavaScript创建了客户端的第一个版本,但是我正在手工解析SOAP信封,我怀疑我的代码是否可以在服务升级中存活,例如,看看SOAP信封规范有多复杂.

那么是否有任何工具可以从WSDL自动为JavaScript生成完全符合SOAP的存根,因此我可以对我的客户端代码的未来更有信心.

更多:我尝试使用的Web服务是RPC编码,而不是文档文字.

javascript soap wsdl

13
推荐指数
2
解决办法
2万
查看次数

在PHP中进行SOAP调用并设置SSL版本

我已经制作了几个使用外部WSDL的脚本.我遇到了一个我必须整合到我的系统中,我无法工作.我一直在努力,没有任何结果.

该脚本已经无法创建构造函数:

$client = new SoapClient("https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL");
Run Code Online (Sandbox Code Playgroud)

给出错误:

PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL' : failed to load external entity "https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL"
Run Code Online (Sandbox Code Playgroud)

我确实安装了openssl并使用PHP,并且记住我已经通过SSL对其他WSDL进行了其他工作的SOAP调用.我发现我无法解决这个问题,因为它已经在构造函数中失败了.

但是: 我尝试使用openssl命令行连接到远程服务器,此命令也失败了:

openssl s_client -connect webtjener09.kred.no:443 -state
Run Code Online (Sandbox Code Playgroud)

但后来我尝试将它强制转换为SSL3并且它完美地运行,如下所示:

openssl s_client -ssl3 -connect webtjener09.kred.no:443 -state
Run Code Online (Sandbox Code Playgroud)

这让我觉得我必须匹配远程服务器的SSL版本.要进行双重检查,我还尝试通过PHP建立cURL连接失败,直到我添加强制SSL版本,如下所示:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);
Run Code Online (Sandbox Code Playgroud)

将CURLOPT_SSLVERSION添加到cURL连接使其正常.然后是我的问题的根源:

如何强制PHP soap构造函数/调用也使用SSL3.在我看来,这必须是解决方案.但是我还没有找到如何将PHP SOAP函数设置为仅使用SSL3.既然命令行-openssl-和PHP cURL都强制使用SSL3,那么我认为我的SOAP函数会发生同样的事情?

输入,好吗?

(使用Ubuntu Linux,PHP 5.3.3)

php ssl curl soap wsdl

13
推荐指数
3
解决办法
2万
查看次数

WSDL中的参数名称具有重要名称

我正在使用JAXWS RI在Java中创建WebService.在自动部署应用程序WAR时会创建WSDL文件.问题是我希望WSDL文件中的参数(每个操作都收到)具有重要的名称,但是它们显示为arg0,arg1,arg2 ...有没有办法为这些参数定义名称而不是使用默认名称?

我已经实现了以下内容:

WebService接口

@WebService
@SOAPBinding(style = Style.RPC)
public interface WS2 {
    @WebMethod String confirmaXML(String lrt_id);
}
Run Code Online (Sandbox Code Playgroud)

WebService接口实现

@WebService(endpointInterface = "vital.tde.ws2.WS2")
public class WS2Imp implements WS2{
    public String confirmaXML(String lrt_id) {
        String respuesta = null;
        //CODE
        return respuesta;
    }
Run Code Online (Sandbox Code Playgroud)

太阳jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints
    xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
    version="2.0">
    <endpoint name="WS2" implementation="vital.tde.ws2.WS2Imp" url-pattern="/WS2" />
</endpoints>
Run Code Online (Sandbox Code Playgroud)

web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>WS2</display-name>
  <listener>
    <listener-class>
                com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
  </listener>
  <servlet>
    <servlet-name>WS2</servlet-name>
    <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>WS2</servlet-name>
    <url-pattern>/WS2</url-pattern> …
Run Code Online (Sandbox Code Playgroud)

java wsdl web-services jax-ws

13
推荐指数
1
解决办法
1万
查看次数