问题标签 [soapserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - php soapserver返回更好的可读关联数组
我正在使用 PHP SOAPSERVER 类。
作为响应,我发送关联 php 数组:
SOAP 返回是这样的:
这样的回报很难为人类分析(给定更大的数组)。首选形式是这样的:
这样的 SOAP 返回是否可能(不更改返回类型 - 数组)?如何?
我刚刚开始使用 SOAP,大多数教程都展示了如何返回简单类型,如字符串。
php - 将 wsdl 中的任何模式元素与 PHP SoapServer 一起使用
我似乎无法使用 PHP SoapServer 让 XSD 元素在我的 wsdl 中工作。根据我所阅读的所有内容,并了解其他几家公司如何实现“松散类型”wsdls。以下内容应该足以检索和发送记录信息。
不幸的是,似乎 php SoapServer 类丢弃了任何未严格定义的元素。我得到的是创建请求上的空记录并在检索/过滤请求上发送空记录,尽管在 SoapServer 处理之前这些字段显然就在那里。
如果我像这样专门定义缺少的字段...
那么一切都很好,这些字段会传递给客户端/从客户端传递。我错过了什么吗?我已经尝试了所有命名空间选项##any、##local 等以及 processContents 选项。我只想能够发送/返回记录的额外字段,无论它们是否在模式中详细说明。
php - 具有无限参数的wsdl操作
我必须为从另一个服务传递数据的 SoapServer 创建 WSDL。提供给我的数据具有以下结构:
这意味着我必须创建方法
不可能知道有多少参数将提供给我的操作。
作为一种解决方案,我正在尝试为不带参数的方法创建 WSDL,但在此方法内部使用该函数func_get_args()
来获取所有参数。
不幸的是,我仍然无法创建正确的 WSDL,而且我不确定这是否可行。
我的网络服务应接收的精确数据(示例)如下:
您是否对此类 WSDL 有任何经验,或者对如何获得提供的数据结构有一些想法?
我虽然考虑考虑作为参数名称的可能性,所以其他数据可以用作复杂类型。也许 WSDL 提供了一些技巧......
web-services - 带有 symfony2 的肥皂网络服务
我需要使用 symfony2 创建一个 Web 服务,我阅读了官方文章http://symfony.com/doc/current/cookbook/web_services/php_soap_extension.html 在示例中它创建了一个带有参数路由 .wsdl 文件的 SoapServer 实例,这是什么文件?我没有在 symfony 中找到太多关于肥皂的文档。请帮忙?
php - 使用 PHP 的 SOAP 在服务器端修改发送的 XML
一个关于PHP的SoapClient和SoapServer,WSDL模式的问题。
比方说,我需要为 XML 的某个部分创建一个摘要,其中包含其中的数据。使用 SoapClient 很容易。我从类中重载__doRequest()
方法SoapClient
,对某些元素进行散列并将其作为元素附加<Hash></Hash>
在<SOAP-ENV:Header/>
. 然后我将生成的 XML 发送到 SOAPServer 调用parent::__doRequest()
。
我需要对响应 XML 做同样的事情。在服务器方面,我遇到了困难。似乎服务器只能将数据作为嵌套数组或对象发送,并且以某种方式插入到客户端的响应 XML 中。我尝试发送带有SoapServer
' 响应的 XML,然后它返回空 XML。
我真的需要在服务器端解析和修改 XML(制作哈希、数字签名等),但到目前为止,无论我在哪里搜索,我都没有找到答案,所以我真的很感谢你的帮助。谢谢。
php - 如何在soapServer 响应中返回自定义XML 响应?
我正在设置一个接受 XML 输入并且必须返回自定义 XML 输出的 SOAP Web 服务。所有这些都在 WSDL 中定义。我为此应用了soapServer(直到有人说它存在阻止我实现目标的错误:-))。
我还不能返回自定义 XML:我得到了一些似乎基于 WSDL 的结果,其标准根元素名称等于输入 XML 加“响应”。实际上,这也让我感到惊讶,所以作为一个附带问题,我想知道为什么会这样以及它是否会受到影响。当然,在创建响应时以某种方式使用 WSDL 定义是一件好事,但正如我所说,我不知道如何在响应中获取自定义 XML。
我做到了这一点:
WSDL
输入 XML
当前的PHP
上面使用的 XSLT 只是更改属性的一种方式——临时将根名称更改为服务器始终返回的名称(以防万一:-))
我希望返回 XML 类似于
但相反它是
在上面的 php 中调试 $dom 内容准确地显示了我尝试返回的 XML(当然,包装在 SOAP Envelope/Body 中,就像输入的一样):
我哪里错了?如何将自定义 XML 放入返回的 http 响应内容中?
php - 如何填充复合消息并作为 SoapServer 响应 XML 返回?
我正在设置一个 SOAP Web 服务,它应该返回一个复合消息。
此消息的有效实例如下:
所有这些都在 wsdl 中整齐地定义:
我一直在服务器端 test_soap.php 无休止地工作以使其正确,但我没有成功。在返回 XML 之前正常工作的部分内容如下:
我几乎尝试了我能想到的所有方法来得到正确的响应,但我没有成功。我能够对之前仅包含一个部分的消息执行相同的操作(请参阅我最近的问题+答案)。
但是在这里,有两个消息部分,我没有成功。
$xml 内容的调试表明它正是我希望看到的返回,当然,在让肥皂服务器将其包装到 Envelope+Body 之后。
实际上,这种情况与只有一个消息部分的情况不同:只要我先剥离 XML 声明,然后返回它,我就可以从一个部分创建一个新的 SoapVar。在这里我不能这样做,因为返回值由两部分组成。
所以我想知道我现在应该做什么:
- 为响应消息声明一个类并填充并返回它
- 使用 SoapVar 和/或 SoapParam 执行一些魔术(请注意,我已经尝试了很多)
- 使用数组和 SoapVar 执行一些魔术(已经尝试了很多)
- 不知何故(如何?)向wsdl寻求帮助
- 完全不同的东西
- 用 SoapServer 退出整个噩梦,从头开始创建我自己的 http 响应
我感谢所有的帮助,所以所有的肥皂专家,不要犹豫,试着回答这个问题!
添加
作为临时解决方法,我编辑了 WSDL,将响应消息更改为只有一个部分。这允许我将预期的消息作为预期的两个部分的串联传递(或任何其他消息,因为 SoapVar 没有对返回的值进行消息定义的结构 WSDL 检查):
对此的特殊之处在于,连接当然不是有效的 XML,缺少周围的根元素,但 SoapVar 无论如何都能解析它。
就是这样:任何对 SoapVar 和 SoapParam / SoapServer 有详细了解的人都可以解释是否有可能返回两个消息部分?
并解释如何做到这一点?
或者,提供有关如何在其他 SOAP 设置中执行此操作的详细信息?
php - 从 PHP SoapServer 返回一个 JSON 对象
如何强制我的 PHP SoapServer 发送 JSON 对象作为响应而不是 XML 文档?
谢谢。
php - 当 wsdl 消息具有相同的部分名称时,SoapServer 不正确地映射函数
我不确定这是 php 错误(错误的实现)还是我的错误(对 SOAP 协议/SoapServer 的理解不佳,因为这是我第一次使用 SoapServer)
我注意到如果有两个或多个相同的操作wsdl:part
(即使wsdl:message
, operation 和 soapAction 不同), TheSoapServer
总是会调用第一个函数。在这个例子中,我有两个函数multiply2
,并且multiply4
都有num
(int) 作为输入参数。今天早些时候,如果我更改部件名称 (service1.wsdl),则功能映射正确。
虽然,我不介意使用不同的名称,但在我看来它就像一个错误。我错过了什么还是应该打开一个错误?
这是我创建的简单示例:
非常简单的php类
并且稍微改变了 SoapServer (增加了日志记录 -改编自这篇文章)但是当我使用普通的 SoapServer 时也会出现问题:
这是客户端代码:
service.wsdl
并且service1.wsdl
基本上是相同的文件,但有两个例外:
- 它们的端点不同(
service.wsdl
指向http://tests.simsimy.info/web/service.php
和service1.php
指向http://tests.simsimy.info/web/service1.php
每个端点使用适当的 wsdl 来加载SoapServer
) - in
service.wsdl
multiply2Request
和multiply4Request
具有作为部件名称 -num
,而 inservice1.wsdl
名称不同 (num2
andnum4
)
这是 service.wsdl 的完整 wsdl
中的更改部分service1.wsdl
:
当我运行客户端代码时,我得到以下输出:
web-services - 使用 wsdl 的 Perl Soap 服务
我正在尝试使用 SOAP::Lite 创建 SOAP 服务,但它不返回值。它在 soap_client.pl 第 6 行的 print 中给出了错误使用未初始化值 $result。
安装的 perl 模块:
阿帕奇模块:
肥皂服务器:math.pl
肥皂客户端:soap_client.pl
wsdl 文件:math.wsdl
当我运行soap_client.pl时,它给了我以下错误:在soap_client.pl第6行打印中使用未初始化的值$result。我已经尝试了2天,没有得到任何线索我做错了。