问题标签 [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.

0 投票
1 回答
451 浏览

python - 用于 Quickbooks Web 连接器的 Python Soap 服务器

我正在编写一个 Soap 服务器来与 quickbooks 网络连接器进行交互,我什至不知道从哪里开始。我有 wsdl 文件,以及 Web 连接器所需的所有函数和参数的列表,但我真的不知道从哪里开始。我找不到任何关于 python 的真正文档,有一些 php 教程,但这不是我所需要的。我尝试使用 ZSI 并让它生成文件,但我不知道如何使用它们。如果有人对此有任何经验,我将不胜感激您的意见。

谢谢

0 投票
1 回答
3056 浏览

php - PHP SoapServer 和复杂类型

我正在使用 SoapServer 类在 PHP 中构建 Web 服务,但我遇到了复杂类型转换的问题。

WSDL 是完全有效的,PHP SoapClient 可以完美地处理它,但似乎存在返回的复杂类型未正确转换的问题。当在 .Net 中使用服务时,这一点就暴露出来了,因为我得到的异常表明该类型不存在于给定的命名空间中。

我多次破坏了我的函数,更改了元素上的命名空间,但是.Net 继续给我错误,不管我使用什么命名空间。

考虑以下脚本的缩写:

简短的回应:

我注意到它xmlns:ns1是通过 WSDL 定义的,并且它确实与 WSDL 中的命名空间相匹配。但是,.Net SOAP 客户端似乎不理解该command元素是在那里定义的。但是,它确实明白这ArrayOfCommand是定义的地方。

所以我的问题是多方面的:

  1. 这是 SoapServer 的已知错误吗?
  2. 如果没有,我是否在我的 WSDL 中遗漏了一些严重的东西?
  3. 我没有正确编码我的对象吗?
  4. 这是.Net的问题吗?如果是这样,解决方法是什么?
0 投票
1 回答
1559 浏览

php - PHP - SOAP-ENV:ClientBad Request after SoapServer->Handle() - 帮助

我得到了一个 PHP Web 服务,它运行了很长时间,但是在某个地方它停止了工作,我就是无法让它再次工作。

我得到了一些 php 页面,我在其中所做的只是定义一个带有函数的类,最后我创建了 SoapServer。

看起来像这样 -

在 $soapserver->handle(); 之后 代码终止,我在我的网页上得到一个模糊的“SOAP-ENV:ClientBad Request”结果。

当我从我的索引页面“require_once”这个页面时会发生这种情况,所以我可以从我的索引页面调用在这个类中定义的函数。

我的猜测是,也许我一直在摆弄我的 WSDL 并且不知何故它搞砸了我的 while WebService,但我尝试查看它有什么问题,但无法解决任何问题。特别是因为这个恼人的模糊错误信息,这并没有真正的帮助。

谢谢!

0 投票
2 回答
5924 浏览

php - 扩展 php SoapClient 以进行站点管理员身​​份验证

简洁版本

我想扩展SoapClient,所以它在访问 WSDL 时在内部执行此操作:

长版

我有一个与此类似的 SOAP 请求:

如您所见,除了代理位之外,一切都非常标准。

代理的原因

我编写了代理来满足 Web 服务提供商的要求,即包括 WSDL 在内的所有端点都通过称为 siteminder 的身份验证系统进行处理。

代理的功能非常简单,如果用 linux 命令行 curl 编写,它会是这样的:

准确地说:

这一切都很好:)

但是最近服务提供商决定改变它的 WSDL。

它现在导入模式文件 ( .xsd),这并没有那么糟糕,只是它与 WSDL 相关。

相对于 WSDL 文件意味着SoapClient解析器现在从代理的位置查找模式文件。错误,找不到!

有关该问题的更多详细信息:

php SoapClient 在传递具有相对路径模式的 wsdl 时失败

所以我的问题是:

我如何重写SoapClient(当然是通过扩展它),仍然通过站点管理员身​​份验证,但不必通过那个额外的代理?

我最初的想法是,我必须以某种方式重写 URI 访问器函数(如果存在),但在这方面没有太多文档,我不知道从哪里开始。

或者,我可能不得不以SoapServer某种方式破解。

如果我能得到任何帮助,我将不胜感激,包括指向SoapClient.

0 投票
2 回答
2688 浏览

php - PHP SoapServer:如何禁用“响应”附加

我正在创建一个 SOAP 服务器(在 Symfony 中使用 ckWebservicePlugin),它需要遵守以下请求和响应结构(我已将其作为已经商定的规范)。

要求:

回应:

我遇到的问题是 SoapServer 总是将响应生成为请求方法的名称+附加的“响应”。

所以发出的响应 XML如下所示:

我希望输出是<ns1:USSDMessageResponse>而不是<ns1:USSDMessageRequestResponse>

我正在使用的 WSDL如下所示:

检查了 SoapServer 文档,浏览了 R. Richards 的 Pro Xml 和 Web 服务,只是不知道如何告诉 SoapServer 响应名称应该是什么。

谢谢你。

0 投票
1 回答
2223 浏览

php - 尽管调用了不同的函数,PHP SoapServer 总是调用相同的函数

我的 SOAP 服务器(打算)设置了三个操作:登录、注销和版本。

登录函数的代码目前正在“伪造”它,接受两个参数,用户名和密码,通过将它们存储在函数类的私有用户名和密码变量中来自动“验证”它们。我在 Web 服务操作的入口点启动了一个会话,并且在初始化期间在 SoapServer 中设置函数类时,我将保持连接如下:

当我创建一个 SOAP CLIENT 并调用我的服务时,无论调用哪个函数,似乎总是执行 version() 函数而不是调用的函数。我想这可能是由于我的 WSDL 的编写方式,但我看不到问题(我是新人)....

我通过 PHP SoapServer 监听了以下 WSDL:

我的 SOAP 函数类如下(通过 setClass() 包含在我的 SOapServer 中):

我的 SOAP CLIENT 测试类如下:

测试类运行的结果如下...注意“未授权”。是对所有内容的响应,表明只有 WebSvcSoapFunctions::version() 函数正在运行

Xxxxxx SERVICE SOAP 服务器测试请求:

版本

请求参数:

大批 ( )

回来:

未经授权。

原始请求:

POST / HTTP/1.1 主机:soap.jrimer-amp64 连接:Keep-Alive 用户代理:PHP-SOAP/5.2.10 内容类型:text/xml;charset=utf-8 SOAPAction:“http://soap.jrimer-amp64/”内容长度:227

原始响应:

HTTP/1.1 200 OK 日期:2011 年 6 月 16 日星期四 19:43:32 GMT 服务器:Apache/2.2.3 (CentOS) X-Powered-By: PHP/5.2.10 Set-Cookie: PHPSESSID=scbuin269990ahfargfq7k0972; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-长度:209 连接:关闭 内容类型:text/xml;字符集=utf-8

未经授权。

Xxxxxx SERVICE SOAP 服务器测试请求:

登录

请求参数:

数组([用户名] => jrimer [密码] => 1234)

回来:

未经授权。

原始请求:

POST / HTTP/1.1 主机:soap.jrimer-amp64 连接:Keep-Alive 用户代理:PHP-SOAP/5.2.10 内容类型:text/xml;charset=utf-8 SOAPAction:“http://soap.jrimer-amp64/” 内容长度:298 Cookie:PHPSESSID=scbuin269990ahfargfq7k0972;

用户名jrimerpassword1234

原始响应:

HTTP/1.1 200 OK 日期:2011 年 6 月 16 日星期四 19:43:32 GMT 服务器:Apache/2.2.3 (CentOS) X-Powered-By:PHP/5.2.10 到期时间:1981 年 11 月 19 日星期四 08:52: 00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 209 Connection: close Content-Type: text/xml; 字符集=utf-8

未经授权。

Xxxxxx SERVICE SOAP 服务器测试请求:

版本

请求参数:

大批 ( )

回来:

未经授权。

原始请求:

POST / HTTP/1.1 主机:soap.jrimer-amp64 连接:Keep-Alive 用户代理:PHP-SOAP/5.2.10 内容类型:text/xml;charset=utf-8 SOAPAction:“http://soap.jrimer-amp64/”内容长度:227 Cookie:PHPSESSID=scbuin269990ahfargfq7k0972;

原始响应:

HTTP/1.1 200 OK 日期:2011 年 6 月 16 日星期四 19:43:32 GMT 服务器:Apache/2.2.3 (CentOS) X-Powered-By:PHP/5.2.10 到期时间:1981 年 11 月 19 日星期四 08:52: 00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 209 Connection: close Content-Type: text/xml; 字符集=utf-8

未经授权。

Xxxxxx SERVICE SOAP 服务器测试请求:

登出

请求参数:

大批 ( )

回来:

未经授权。

原始请求:

POST / HTTP/1.1 主机:soap.jrimer-amp64 连接:Keep-Alive 用户代理:PHP-SOAP/5.2.10 内容类型:text/xml;charset=utf-8 SOAPAction:“http://soap.jrimer-amp64/”内容长度:227 Cookie:PHPSESSID=scbuin269990ahfargfq7k0972;

原始响应:

HTTP/1.1 200 OK 日期:2011 年 6 月 16 日星期四 19:43:32 GMT 服务器:Apache/2.2.3 (CentOS) X-Powered-By:PHP/5.2.10 到期时间:1981 年 11 月 19 日星期四 08:52: 00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 209 Connection: close Content-Type: text/xml; 字符集=utf-8

未经授权。

Xxxxxx SERVICE SOAP 服务器测试请求:

版本

请求参数:

大批 ( )

回来:

未经授权。

原始请求:

POST / HTTP/1.1 主机:soap.jrimer-amp64 连接:Keep-Alive 用户代理:PHP-SOAP/5.2.10 内容类型:text/xml;charset=utf-8 SOAPAction:“http://soap.jrimer-amp64/”内容长度:227 Cookie:PHPSESSID=scbuin269990ahfargfq7k0972;

原始响应:

HTTP/1.1 200 OK 日期:2011 年 6 月 16 日星期四 19:43:32 GMT 服务器:Apache/2.2.3 (CentOS) X-Powered-By:PHP/5.2.10 到期时间:1981 年 11 月 19 日星期四 08:52: 00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 209 Connection: close Content-Type: text/xml; 字符集=utf-8

未经授权。

有什么想法吗?

注意:我注意到,如果我只是在 WSDL 中为 VERSION 函数注释掉定义,那么下一个定义的函数将成为“始终调用”函数(登录)......我在该 WSDL 中配置了什么错误?

0 投票
1 回答
1327 浏览

php - PHP SoapServer 连接认证实现

搜索谷歌,似乎无法找到一个明确的解决方案......

我正在实现一个 PHP SOAP 服务器来处理来自我们系统的特定用户的请求。

我不仅需要在每次请求期间通过发送到 SOAP 函数的用户/传递参数对连接用户进行身份验证,而且还需要以某种方式对与服务的单纯连接进行身份验证。

实现函数级身份验证很容易:系统中任何函数的前两个参数是用户和密码,如果传入了无法识别的用户/密码组合,我们将返回错误代码。棘手的部分是连接身份验证。

我已经看到实现,当使用包含“用户名”和“密码”的选项数组实例化 SOAP 客户端时,能够在连接客户端的连接级别进行身份验证,但我无法找到任何服务器-处理此类身份验证的侧代码。

您需要做什么才能在处理()客户端请求的 PHP SoapServer 类中实现这一点?

已解决:似乎我能够使用为 BASIC Auth 启用的 .htaccess 文件来实现我想要实现的目标......

传递到客户端的登录名/密码被发送到服务器并作为 PHP_AUTH_USER 和 PHP_AUTH_PW 放入 php $_SERVER 数组中。PHP 根据 .htaccess 文件中定义的 passwd 文件检查这些值,当在网页中查看时,会弹出通用用户/密码框,如果身份验证失败,则会导致 401 Unauthorized,否则让您进入... 通过 SOAP客户端,您使用“登录”和“密码”选项传递用户密码,然后在客户端处理此身份验证部分。

0 投票
1 回答
646 浏览

c# - 如何将 WCF 和 SOAP 集成到现有的服务器-客户端应用程序中?

我是服务器客户端应用程序的新手。

我正在尝试构建一个原型,其中 Java 服务器通过 http 与 .net WPF 客户端通信。服务器和客户端当前通过第三方消息传递系统 (Tibco) 进行通信。我做了一些研究并决定使用 SOAP 和 WCF。我一直在尝试查找有关如何实现此功能的教程,但似乎找不到任何适合我需要的东西。如果有人可以向我指出一些资源,像我这样的新手可以用来加快将 SOAP 和 WCF 实施到现有系统的速度,我将不胜感激。此外,如果有人对可以使用的任何其他协议有任何建议,请随时推荐。

0 投票
1 回答
4057 浏览

php - PHP SoapVar 对象属性?

有没有人知道如何向 SoapVar 对象添加属性?看起来这很简单,但我无法接受/工作。

我查看了 PHP 文档和以下 stackoverflow 问题:

关于 SoapVar 的文档

stackoverflow 问题: SoapVar/Param 和 SOAP 中的嵌套重复元素

我正在尝试添加一个类似这个数组示例的属性,但使用复杂的 SoapVar 对象。

最终结果是伤口

谢谢。

0 投票
2 回答
1152 浏览

php - php SoapServer 不打印任何 xml 文档

全部

我使用下面的代码创建了一个肥皂服务器。我发现在 PHP 中创建 wsdl 文档有点困难。所以我决定使用非 wsdl 模式。

但是当我尝试访问这个程序时,它什么也没打印。网络浏览器和程序(我使用 SoapClient)

我厌倦了在客户端调用这样的函数:

我得到错误:

哪里错了?我不知道。:( 代码看起来不错。为什么没有打印?