soap 相关问题

简单对象访问协议(SOAP)是用于在Web服务的实现中交换结构化信息的协议规范。

Python zeep - 使用 zeep.xsd.SkipValue 发送包

我想通过 WSDL 作为 SOAP 请求发送数据。到目前为止,我可以使用下面的结构来做到这一点,但是现在需要一个标签,我想在没有标签的情况下发送包裹...

回答 1 投票 0

Soap 抛出 java.io.IOException:HTTP 请求失败,HTTP 状态:500

实际上我使用此代码访问此网络服务 FahrenheitToCelsius 方法,得到了正确的响应,但是当我尝试访问我的网络服务时得到 java.io.IOException:HTTP

回答 3 投票 0

无法为 SOAP 创建消息工厂:无法创建 SAAJ 元工厂提供程序 com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl 未找到

我们的产品基于 eclipse RCP 和 OSGi 框架构建。 我已将代码从 JDK1.8 升级到 JDK11。在代码中,我使用 MessageFactory.newInstance().createMessage() 创建 SOAP 消息...

回答 2 投票 0

JMS 代理的 SOAP 或 REST 接口。 “基于 SOAP 的 JMS”

我的公司很久以前就决定向客户公开 JMS 队列以交换数据。我们正在迁移应用程序服务器,并且必须更新所有客户端库。所以我们

回答 1 投票 0

所有 HTTP 响应代码对所有 HTTP 动词都有效吗?

对于任何特定的 HTTP 动词是否存在无效的 HTTP 响应,或者理论上都是有效的?

回答 2 投票 0

PHP 从 XML 响应中获取属性

当我调用soap api 时,我得到这个响应 当我调用soap api 时,我得到这个响应 <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wss="http://www.adonix.com/WSS"><soapenv:Body><wss:saveResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><saveReturn xsi:type="wss:CAdxResultXml"><messages xsi:type="soapenc:Array" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" soapenc:arrayType="wss:CAdxMessage[0]"></messages><resultXml xsi:type="xsd:string"><! [CDATA[{"PAY0_1":{"NUM":"WSBAC2310- 00033","PAYAPPFLG":"2","PAYAPPFLG_LBL":"Oui"},"PAY1_1": {"FCY":"101","BPR":"TRAVELT","BPAINV":"1"},"PAY1_2": {"ACCDAT":"20231007","REF":"04070436","BAN":"BNP01","AMTCUR":"362.00","CHQNUM":"82cfaaac0 7","ZPAYREF":"82cfaaac07"},"PAY1_5":{"FROCURRAT":"1 E","CURCURRAT":"EUR"},"PAY1_6": {"SOLDE":"652934.87"},"PAY1_4": [{"DENCOD":"OPE","VCRNUM":"","FCYLIN":"101","CURLIN":"EUR","AMTLIN":"362.00","DISDAT":nul l}],"PAY4_3":{"NBRPAY":"0"},"PAY4_1":[],"VTL_2":[],"ADXTEC": {"WW_MODSTAMP":"20231007193505","WW_MODUSER":"WSVPG"}}]]></resultXml><status xsi:type="xsd:int">1</status><technicalInfos xsi:type="wss:CAdxTechnicalInfos"><busy xsi:type="xsd:boolean">false</busy><changeLanguage xsi:type="xsd:boolean">false</changeLanguage><changeUserId xsi:type="xsd:boolean">false</changeUserId><flushAdx xsi:type="xsd:boolean">false</flushAdx><loadWebsDuration xsi:type="xsd:double">2</loadWebsDuration><nbDistributionCycle xsi:type="xsd:int">-1</nbDistributionCycle><poolDistribDuration xsi:type="xsd:double">1</poolDistribDuration><poolEntryIdx xsi:type="xsd:int">10100</poolEntryIdx><poolExecDuration xsi:type="xsd:double">441</poolExecDuration><poolRequestDuration xsi:type="xsd:double">-1</poolRequestDuration><poolWaitDuration xsi:type="xsd:double">0</poolWaitDuration><processReport xsi:type="xsd:string" xsi:nil="true"/><processReportSize xsi:type="xsd:int">-1</processReportSize><reloadWebs xsi:type="xsd:boolean">false</reloadWebs><resumitAfterDBOpen xsi:type="xsd:boolean">false</resumitAfterDBOpen><rowInDistribStack xsi:type="xsd:int" xsi:nil="true"/><totalDuration xsi:type="xsd:double">450</totalDuration><traceRequest xsi:type="xsd:string"/><traceRequestSize xsi:type="xsd:int">0</traceRequestSize> </technicalInfos></saveReturn></wss:saveResponse></soapenv:Body></soapenv:Envelope> 我想从这个文档获取状态属性, 我用这个代码 $xmlDomElement = new SimpleXMLElement(parent::__getLastResponse()); $xmlDomElement->registerXPathNamespace("wss", "http://www.adonix.com/WSS"); /** @var SimpleXMLElement $status */ $status = $xmlDomElement->xpath("//multiRef[1]//status/text()"); if ((int) $status[0]->__toString() == 0) { // my code } 但我收到错误Undefined index: 0 回复有效吗?在这种情况下我怎样才能获得状态属性,它是 1 尝试: $xmlDomElement = new SimpleXMLElement(parent::__getLastResponse()); $xmlDomElement->registerXPathNamespace("wss", "http://www.adonix.com/WSS"); $status = $xmlDomElement->xpath("//wss:saveResponse//saveReturn//status/text()"); if (isset($status[0]) && (int) $status[0]->__toString() == 0) { // my code }

回答 1 投票 0

PHP 和 SOAP 消息代理有什么用?

我正在研究一种解决方案,使大型数据库中的某些数据可用于远程网站。我的第一个想法是简单地编写一些肥皂网络服务来从数据中获取某些数据......

回答 1 投票 0

PHP SOAP 调用空响应(授权标头)

我想调用soap api,将数据保存到Sage X3版本12。 我正在使用这段代码: $选项=数组( '登录' => $用户名, '密码' => $密码, ); $api = 父级::__const...

回答 1 投票 0

WSDL 包含内容

将带有 XSD 的 WSDL 读取到 org.dom4j.io.SAXReader 中的正确方法是什么?有没有办法使用 ZipInputStream 来做到这一点,这样我就不必将其保存到磁盘?

回答 1 投票 0

向网络服务发送 XML 请求

我正在尝试将包含 xml 数据的调用发送到特定的 Web 服务,但收到响应代码 500。我正在努力解决此问题。任何意见将不胜感激。 字符串 wsURL = &...

回答 1 投票 0

在 Guidewire Insurance Suite 中记录 SOAP 消息

我想捕获我的 GW 应用程序(索赔中心和联系人管理器)之间的 SOAP 通信。我想让 CC 或 CM 将请求和响应写入日志文件,或者至少查看...

回答 2 投票 0

如何在Python中使用zeep在SOAP请求中传递“Any”类型参数

我有一个 WSDL,它在所有 SOAP 操作中使用“any”类型作为核心元素 (Element)。请注意,我已将其缩小,因为它相当大: 我有一个 WSDL,它在所有 SOAP 操作中使用“any”类型作为核心元素 (Element)。请注意,我已将其修剪掉,因为它很大: <?xml version="1.0" encoding="utf-8"?> <definitions targetNamespace="urn:xtk:queryDef" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:xtk:queryDef" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <types> <s:schema elementFormDefault="qualified" targetNamespace="urn:xtk:queryDef"> <s:complexType name="Element"> <s:sequence> <s:any processContents="lax"/> </s:sequence> </s:complexType> <s:element name="ExecuteQuery"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="sessiontoken" type="s:string" /> <s:element maxOccurs="1" minOccurs="1" name="entity" type="tns:Element" /> </s:sequence> </s:complexType> </s:element> <s:element name="ExecuteQueryResponse"> <s:complexType> <s:sequence> <s:element maxOccurs="1" minOccurs="1" name="pdomOutput" type="tns:Element" /> </s:sequence> </s:complexType> </s:element> </s:schema> </types> <message name="ExecuteQueryIn"> <part element="tns:ExecuteQuery" name="parameters" /> </message> <message name="ExecuteQueryOut"> <part element="tns:ExecuteQueryResponse" name="parameters" /> </message> <portType name="queryDefMethodsSoap"> <operation name="ExecuteQuery"> <input message="tns:ExecuteQueryIn" /> <output message="tns:ExecuteQueryOut" /> </operation> </portType> <binding name="queryDefMethodsSoap" type="tns:queryDefMethodsSoap"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="ExecuteQuery"> <soap:operation soapAction="xtk:queryDef#ExecuteQuery" style="document" /> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" /> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" /> </output> </operation> </binding> <service name="XtkQueryDef"> <port binding="tns:queryDefMethodsSoap" name="queryDefMethodsSoap"> <soap:address location="https://xxxxxxxxxxxxxx/nl/jsp/soaprouter.jsp" /> </port> </service> </definitions> 我想在 Python 3 中使用 zeep 生成此有效负载: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:xtk:queryDef"> <soapenv:Header/> <soapenv:Body> <urn:ExecuteQuery> <urn:sessiontoken>xxxxxxx</urn:sessiontoken> <urn:entity> <queryDef schema="nms:recipient" operation="select"> <select> <node expr="@email"/> <node expr="@lastName+'-'+@firstName"/> <node expr="Year(@birthDate)"/> </select> <orderBy> <node expr="@birthDate" sortDesc="true"/> </orderBy> </queryDef> </urn:entity> </urn:ExecuteQuery> </soapenv:Body> </soapenv:Envelope> 但是我一生都无法弄清楚如何管理 WSDL 中的“Any”类型: <s:complexType name="Element"> <s:sequence> <s:any processContents="lax"/> </s:sequence> </s:complexType> 这就是 XML 中“实体”节点所需的类型。我尝试过的所有操作都会导致 zeep 出现异常。 这是我到目前为止所拥有的: # Executes a query and returns the result set def execute_query(session_token): # Load the WSDL locally - not authorised to get from server wsdl_url = os.path.abspath("querydef_dev.wsdl") history = HistoryPlugin() client = Client(wsdl_url, plugins=[history]) execute_query_type = client.get_element("ns0:ExecuteQuery") entity_type = client.get_type("ns0:Element") any_entity = xsd.AnyObject(entity_type, entity_type(_value_1={'queryDef': [{'schema': 'recipients'}]})) params = execute_query_type(entity=any_entity, sessiontoken=session_token) response = client.service.ExecuteQuery(params) if __name__ == '__main__': execute_query('xxxxxxx') 该代码特别给出了此错误: AttributeError: 'dict' object has no attribute 'value'. Did you mean: 'values'? 我想我已经明白了,使用 xsd.AnyObject 来设置。 我尝试了多种与 get_type、get_element 的组合,并使用 **params 和 params 致电服务。一切都以 client.service.ExecuteQuery() 抛出异常结束。 有什么想法我哪里出错了吗? 我找不到以任何有意义的方式使用 AnyObject 的答案。 但是,我确实通过使用 lxml 手动创建“任何”节点上下文来设法使其正常工作。 因此,对于我上面描述的用例: def execute_query(session_token): # Load the WSDL locally - not authorised to get from server wsdl_url = os.path.abspath("querydef_dev.wsdl") history = HistoryPlugin() client = Client(wsdl_url, plugins=[history]) # Construct the query def query_def_element = etree.Element('query_def') query_def_element.set('schema', 'nms:recipient') query_def_element.set('operation', 'select') select_element = etree.SubElement(query_def_element, 'select') node_element = etree.SubElement(select_element, 'node') node_element.set('expr', '@email') node_element2 = etree.SubElement(select_element, 'node') node_element2.set('expr', '"@lastName+"-""+@firstName"') node_element3 = etree.SubElement(select_element, 'node') node_element3.set('expr', 'Year(@birthDate)') order_element = etree.SubElement(query_def_element, 'orderBy') order_node_element = etree.SubElement(order_element, 'node') order_node_element.set('expr', '"@birthDate"') order_node_element.set('expr', 'sortDesc="true') # Construct the final payload data = { "sessiontoken": session_token, "entity": { "_value_1": query_def_element } } # Call the service response = client.service.ExecuteQuery(**data)```

回答 1 投票 0

System.Security.Cryptography.Pkcs 的 ComputeSignature 方法适用于本地主机,但不适用于 azure 应用程序服务

我正在开发一个c# web api。我添加了一个类库来连接到外部 Web 服务。要登录该资源,请执行以下方法: /// ... 我正在开发一个 C# Web api。我添加了一个类库来连接到外部 Web 服务。要登录该资源,请执行以下方法: /// <summary> /// Firma mensaje /// </summary> /// <param name="messageBytes">Bytes del mensaje</param> /// <param name="signerCertificate">Certificado usado para firmar</param> /// <returns>Bytes del mensaje firmado</returns> /// <remarks></remarks> public static byte[] SignMessageBytes(byte[] messageBytes, X509Certificate2 signerCertificate) { const string ID_FNC = "[FirmaBytesMensaje]"; try { // Pongo el mensaje en un objeto ContentInfo (requerido para construir el obj SignedCms) var contentInfo = new ContentInfo(messageBytes); var signedCms = new SignedCms(contentInfo); // Creo objeto CmsSigner que tiene las caracteristicas del firmante var cmsSigner = new CmsSigner(signerCertificate) { IncludeOption = X509IncludeOption.EndCertOnly }; if (VerboseMode) Console.WriteLine(ID_FNC + "***Firmando bytes del mensaje..."); // Firmo el mensaje PKCS #7 signedCms.ComputeSignature(cmsSigner); if (VerboseMode) Console.WriteLine(ID_FNC + "***OK mensaje firmado"); // Encodeo el mensaje PKCS #7. return signedCms.Encode(); } catch (Exception ex) { throw new Exception(ID_FNC + "***Error al firmar: " + ex.Message); } } 这在本地主机环境中完美运行。但是当我将其发布到 Azure 应用程序服务时,它失败并出现错误: The system cannot find the file specified. 正在排队 signedCms.ComputeSignature(cmsSigner); 不知道可能是什么原因。如果有人有关于应用程序服务需要的任何额外配置的信息,这对我会有很大帮助。非常感谢! 让 SignMessageBytes 方法在 Azure 环境中工作 尝试更改以下代码: // Find the certificate by thumbprint X509Certificate2Collection certs = store.Certificates.Find( X509FindType.FindByThumbprint, "your-thumbprint", false ); if (certs.Count > 0) { X509Certificate2 signerCertificate = certs[0]; // Continue with signing using signerCertificate } else { throw new Exception("Certificate not found."); } 将“您的指纹”替换为您证书的实际指纹。

回答 1 投票 0

如何将 xmlns:tns="http://schemas.xmlsoap.org/soap/encoding/" 添加到肥皂请求

我编写了一个调用soap服务的客户端,但它发送的请求不是我所期望的。 这是我的代码: 公共MessageResponse traGiayToHoSo(MessageRequest请求){ 留言乱七八糟...

回答 1 投票 0

Spring Boot 3 更新:没有“jakarta.xml.ws.WebServiceContext”类型的合格 bean 可用

从 Spring Boot 2.7 更新后。到版本 3 时,出现了奇怪的错误,即没有可用的“jakarta.xml.ws.WebServiceContext”类型的合格 bean。我按照迁移步骤进行操作(jav...

回答 2 投票 0

使用Asp.Net Core将参数传递给soap方法SOAPCORE

我使用SoapCore开发了肥皂方法。 这是我的代码: [ServiceContract(命名空间 = "http://txn.xxx.com")] 公共接口 ISampleService { [操作合约()...

回答 1 投票 0

通过 Python suds 在 JIRA 中创建问题时设置受让人字段

使用 JIRA 版本 4.2。使用 Python 2.7 和 suds 0.4,如何创建受让人字段集的问题?下面的代码中将忽略受让人字段。 new_issue = client.service.createIssue...

回答 4 投票 0

While 循环在解组时不循环遍历整个 xml 字符串

我有一个已解组的 xml 字符串,但它只返回第一部分。我相信我的 while 循环不正确。 while(xsr.hasNext()){ if(xsr.isStartElement() && "list".equa...

回答 1 投票 0

在没有任何命名空间的情况下解析标头元素

我正在尝试构建一个 CoreWCF 服务,它可以解析 XML 请求,如下所示 - 我正在尝试构建一个可以解析 XML 请求的 CoreWCF 服务,如下所示 - <NS1:Envelope xmlns:NS1="http://schemas.xmlsoap.org/soap/envelope/"> <NS1:Header> <Tag1>Value 1</Tag2> <Tag2>Value 2</Tag2> </NS1:Header> <NS1:Body> <!-- Body elements here --> </NS1:Body> </NS1:Envelope> 所以,我宣布了一个与此类似的MessageContract - [MessageContract] public class Class1 { [MessageHeader] public string Tag1 { get; set; } [MessageHeader] public string Tag2 { get; set; } // other body tag declaration } 但是,当我的服务收到请求时,它无法解析 Tag1 和 Tag2 的值,因为这些标签中的请求中没有给出命名空间。 我尝试将 [XmlElement(Form=XmlSchemaForm.Unqualified)] 设置为如下属性 - [MessageContract] public class Class1 { [MessageHeader] [XmlElement(Form=XmlSchemaForm.Unqualified)] public string Tag1 { get; set; } [MessageHeader] [XmlElement(Form=XmlSchemaForm.Unqualified)] public string Tag2 { get; set; } // other body tag declaration } 但是当我尝试从浏览器访问 WSDL 页面时,这会引发错误,我收到以下错误 - 在架构顶层声明的元素不能是无限定的 任何人都可以建议我如何在没有命名空间的情况下解析这些值。请求格式无法更改。 根据我的理解,您的请求中不应该有命名空间,但服务中有。 您可以尝试通过将 MessageHeader 属性的 Namespace 参数设置为空字符串来删除 XML 命名空间,如下所示: public class Class1 { [MessageHeader(Namespace = "")] public string Tag1 { get; set; } [MessageHeader(Namespace = "")] public string Tag2 { get; set; } // other body tag declaration }

回答 1 投票 0

解析 ksoap2 响应

我使用 ksoap2 lib 从 Android 客户端与 SOAP Web 服务进行通信。 ksoap 团队做得很好,但问题是,没有任何好的例子如何在不同的环境中正确使用它

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.