soap 相关问题

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

修改 SOAP 标头以匹配第 3 方格式

我必须创建一个 Web 服务来从第三方公司检索信息。他们有一个 soap xml 的示例,我已经能够让它匹配,除了 heade...

回答 1 投票 0

Quarkus 上的 Apache Camel - CXF SOAP - 本地主机问题:8080

我正在使用 Quarkus Apache Camel。我想使用 camel-quarkus-cxf-soap。我试过这个: https://code.quarkus.io/?e=org.apache.camel.quarkus%3Acamel-quarkus-cxf-soap&extension-search=camel-quarkus-...

回答 0 投票 0

在 .net 中从 WSDL 创建 soap 端点

我正在尝试创建一个将由另一家公司使用的 SOAP Web 服务。该公司希望以某种方式提供数据,因此我创建了一个 WSDL 来反映这一点。 我不需要

回答 2 投票 0

使用 SOAP 信封和无效的 xsd 地址反序列化 XML 文件

我想反序列化这种具有 SOAP 信封和标头中不再存在的无效 .xsd 地址的 XML 文件(finvoiceack.xsd)。想要将节点获取到数据集或我...

回答 1 投票 0

如何访问Openlink-Virtuoso“{Default SSL Web Site}”? [关闭]

这个问题是关于Openlink-Virtuoso软件部署的。 Virtuoso 无需开箱即用的 SSL 证书。 它也适用于通过 Web 界面为新的侦听器和页面创建的新 ssl 密钥/证书...

回答 0 投票 0

如何访问Openlink-Virtuoso“{默认SSL网站}”?

我正在尝试访问 Virtuoso“{默认 SSL 网站}”页面。 (测试服务器ip为“”,无dns记录,新鲜的VOS Virtuoso:07.20.3236) 我已经尝试过的:...

回答 0 投票 0

如何从 Soap 消息请求中获取 Integer 类的空对象?

肥皂对我来说是一项新技术。我收到一个 Soap 消息请求,这是其中的一部分 ...

回答 1 投票 0

将多个 JSON 值分配给从空手道上的数据库调用返回的 XML 文件

对于测试项目,我正在调用数据库,并获取我将在我的 xml 文件中设置的必要字段以进行 SOAP 服务调用。 据我所知,数据库调用返回为 J...

回答 1 投票 0

Spring WS 中的 Axiom 支持 [关闭]

Spring 在最新版本的 Spring Web 服务 JAR 中删除了 AxiomSoapMessageFactory。我们现有的应用程序使用以前版本的 Spring WS。请让我知道我有什么选择...

回答 0 投票 0

WCF 生成的客户端与 Web 请求

我刚刚有一个关于 svcutil 从 WSDL 生成的 WCF 客户端与使用具有正确参数的 HttpClient 进行调用的一般性问题。我什至不知道 WCF 的存在,直到最近

回答 0 投票 0

在有效负载工厂中介的帮助下创建 Soap 有效负载的问题

我正在尝试构建一个带有适当信封然后正文的 SOAP 消息,但我无法获得它。下面是我为构建它而编写的代码行。 ...

回答 1 投票 0

SOAP 不使用 simplexml_load_String 提取子节点

我正在尝试获取 SOAP 数组/对象,但出现错误,我也尝试了名称空间。 但以下是在其他 XML 响应中对我有用的代码,在此处不起作用。 请指导我的错误...

回答 0 投票 0

javax.xml.ws.handler over Spring Webflux中的Trace信息

我有一个 Spring Webflux 微服务,它没有将 traceId 和 spanId 放在特定的日志跟踪中。我的应用程序使用 SOAPHandler 来记录 SOAP 请求/响应。在这个痕迹中, spanId 和 traceI ...

回答 0 投票 0

在 WSO2 api 管理器 4.1.0 中更改生成 REST API 的 URI 模式形成 SAOP 方法

我正在使用 WSO2 API Manager 4.1.0,我需要更改从 SAOP 端点生成的 REST API 的方法的 URI 模式(rest 服务在 rest 端点上没有问题)。 例如...

回答 0 投票 0

如何将一个或多个 Confluence 数据中心/服务器空间导出为 PDF?

如何根据对所有可用空间的搜索将一个或多个 Confluence 空间导出为 PDF? 信息稀缺,所以我将此作为问答来帮助他人。 我已经阅读了 API 的迷宫

回答 1 投票 0

Spring boot - 通过 HTTPS 使用 SOAP Web 服务

我使用 Spring 引导教程 https://spring.io/guides/gs/consuming-web-service/ 构建了一个简单的 SOAP Web 服务客户端。它工作完美。 如果我想切换到 HTTPS,麻烦就开始了

回答 1 投票 0

如何使用 Zeep 为 SOAP 函数传递多个参数?

我正在使用 Zeep 访问 Web 服务。从web服务的wsdl来看,有多个函数/操作。他们都将“字符串”作为输入。我能够访问并获得

回答 0 投票 0

在 .Net6 中找不到 Soap CustomBinding

我有旧的遗留 Standard2.1 项目,带有带有 CustomBinding 的 Soap 服务,我尝试将它升级到 .Net6。在构建时我收到以下错误 //引用类型'IBindingRuntimePreferences'声明我...

回答 0 投票 0

XML 不能用 soap-env 解析,在 PHP 中有自定义标签

我在用 PHP 解析 XML 响应时遇到错误 当我从 CURL 请求调用时,我有以下 XML 响应 我在用 PHP 解析 XML 响应时遇到错误 当我从 CURL 请求调用时,我有以下 XML 响应 <soap-env:Header> <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1"> <eb:From> <eb:PartyId eb:type="URI">Sabre_API</eb:PartyId> </eb:From> <eb:To> <eb:PartyId eb:type="URI">Agency</eb:PartyId> </eb:To> <eb:ConversationId>2021.01.DevStudio</eb:ConversationId> <eb:Service eb:type="sabreXML">Session</eb:Service> <eb:Action>TokenCreateRS</eb:Action> <eb:MessageData> <eb:MessageId>1913771794839350290</eb:MessageId> <eb:Timestamp>2023-02-23T22:04:43</eb:Timestamp> </eb:MessageData> </eb:MessageHeader> <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"> <wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">T1RLAQLASo74A7olKG7QnepeFqs19UHX+0Cds9QiDZoYfu677xC3Vkr9a+OcQhutjPL4atVMAADQRtHIXdehGg/0OVuPdia/0cM233jFDvyJJHgJHC3o8gV2ssS63b4Y0lgCG59SiG4tmEcqAXcYAMlnq+wJ4TfsOIDFwYdP+D0peSEFBM/m3EyOUqc4idJ+vO4S7xENCeQ7UX4YVKjVLJs788omPDbSIRNo85KQ5QxRprldV0jucJpAtbNfs1DrMHFqNIPyg0CpVpgXILkFx0azkcAuvmbHMHLqqO13WJEOhsG0KDBhBhRn8CwoCgD9foXL24W6yGu8Ecm0Fzvb/MuAjuYm9s48yg**</wsse:BinarySecurityToken> </wsse:Security> </soap-env:Header> <soap-env:Body> <sws:TokenCreateRS xmlns:sws="http://webservices.sabre.com" Version="1.0.0"> <sws:Success/> </sws:TokenCreateRS> </soap-env:Body> </soap-env:Envelope> 为了解析上面的 XML,我最初尝试使用 simplexml_load_String 但它给出了一个空响应。 然后我使用以下代码尝试了DOM方法,这里考虑$response->Data是上面的XML。 $dom = new DOMDocument; $dom->preserveWhiteSpace = false; $dom->loadXML($response->Data); $dom->formatOutput = true; $XMLContent = $dom->saveXML(); 它再次给我以下输出: <!--?xml version="1.0" encoding="UTF-8"?--> <soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:header> <eb:messageheader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustunderstand="1"> <eb:from> <eb:partyid eb:type="URI">Sabre_API</eb:partyid> </eb:from> <eb:to> <eb:partyid eb:type="URI">Agency</eb:partyid> </eb:to> <eb:conversationid>2021.01.DevStudio</eb:conversationid> <eb:service eb:type="sabreXML">Session</eb:service> <eb:action>TokenCreateRS</eb:action> <eb:messagedata> <eb:messageid>1002038859236010450</eb:messageid> <eb:timestamp>2023-02-23T23:52:03</eb:timestamp> </eb:messagedata> </eb:messageheader> <wsse:security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"> <wsse:binarysecuritytoken valuetype="String" encodingtype="wsse:Base64Binary">T1RLAQJZqih4+TYQmYCcdj42lcej5nckNWdo6WNb8edNl3xNtxAkqmu2YKjKki1OKQ7B3HK3AADQCGiRWrlzFPM0KB4foAOsSF+I+5eXE32uQ23LLd+hOduY2BCJYqPw7CvwCJ/LfNjy3P+QyvClvu6ysctC3a0GjmixDPDqCIckcXPb+XDFyYhR5G5QzQjch/Eax25koLnNvfN8rlvjNq+ENJmaV17wP43GLo1pzd19d9HGMn1VgjrJiVGWAb1ezyeiFNAd1VuBD2lAmdlo4jvZJzAS/fklZvwNFbKME64YpaFRptoLz0FKmz47y1TVYFtV6TZxbKirP3PDms0aGlItbJ4apPSB2Q**</wsse:binarysecuritytoken> </wsse:security> </soap-env:header> <soap-env:body> <sws:tokencreaters xmlns:sws="http://webservices.sabre.com" version="1.0.0"> <sws:success> </sws:success></sws:tokencreaters> </soap-env:body> </soap-env:envelope> 所以我计划从NODE获取数据,如下所示 $XMLContent->getElementsByTagName('soap-env:header')->item(0)->nodeValue); 但是它没有给我一个节点值,而是开始给我和错误。 我只想获取节点中的数据wsse:binarysecuritytoken 有没有人经历过这样的事情? 你能帮我吗?? 更新 也尝试关注,但仍然没有帮助 $domDocument = new DOMDocument(); $domDocument->loadXML($XMLContent); $carriers=array(); $results=$domDocument->getElementsByTagName("wsse:Security"); foreach($results as $result) { foreach($result->childNodes as $node) { if($node instanceof DOMElement) { array_push($carriers, $node->textContent); } } } var_dump($carriers); 好吧,在花了几个小时之后,我终于明白了! 我不得不根据如下标签名称进行修改,在大多数情况下,我不得不使用 soap-env 而不是 SOAP. $dom = new DOMDocument; $dom->preserveWhiteSpace = false; $dom->loadXML($response->Data); $dom->formatOutput = true; $XMLContent = $dom->saveXML(); $xml = simplexml_load_String($XMLContent, null, null, 'soap-env', true); if(!$xml) trigger_error("Encoding Error!", E_USER_ERROR); $Results = $xml->children('soap-env',true); foreach($Results->children('soap-env',true) as $fault){ if(strcmp($fault->getName(),'Fault') == 0){ trigger_error("Error occurred request/response processing!", E_USER_ERROR); } } foreach($Results->children('wsse',true) as $nodes){ if(strcmp($nodes->getName(),'Security') == 0){ foreach($nodes->children('wsse',true) as $securityNodes){ if(strcmp($securityNodes->getName(),'BinarySecurityToken') == 0){ $tokenParsed = (string)$securityNodes; } } } } 这就是SOAP,一种使用XML语法的对象序列化格式。最佳解决方案是使用 SOAP 库。 PHP 对此有ext/soap。使用 XML 库会低一个级别。 XML 使用命名空间。名称空间是使用唯一的 URI 指定的。为了可读性/可维护性,XML 为 URI 定义了别名,并将它们用作节点名称的前缀。但是以下3个例子都应该读作{http://schemas.xmlsoap.org/soap/envelope/}envelope: <soap-env:envelope xmlns::soap-env="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/> <envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/> 命名空间可以在任何元素节点上定义,因此它们甚至可以在单个文档中更改。这意味着您的代码不应该依赖于文档中的别名/前缀,而是名称空间 URI。 我强烈建议为使用的命名空间定义一个数组变量/常量。然后你可以使用 Xpath 和命名空间感知 DOM 方法(后缀NS)。 // used namespaces, the keys do NOT need to match the prefixes in the XML. $xmlns = [ 'soap' => 'http://schemas.xmlsoap.org/soap/envelope/', 'eb' => 'http://www.ebxml.org/namespaces/messageHeader', 'sec' => 'http://schemas.xmlsoap.org/ws/2002/12/secext' ]; $document = new DOMDocument(); $document->loadXML(getSoapXmlString()); $xpath = new DOMXpath($document); // register your aliases for the namespaces foreach ($xmlns as $alias => $uri) { $xpath->registerNamespace($alias, $uri); } $token = $xpath->evaluate( 'string(//sec:security/sec:binarysecuritytoken)' ); var_dump($token); DOMXpath::evaluate() 允许 Xpath 表达式返回节点列表和标量值。如果将节点列表(由位置路径指定)转换为字符串,它将返回第一个节点的文本内容或空字符串。

回答 2 投票 0

SOAP API 请求的 WS-Security 配置

我正在尝试从需要 Keystore 中的数字证书 (JKS) 的服务器获取数据以授权 soap 请求,除此之外,它还需要 WSS 传出的基本授权

回答 1 投票 0

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