问题标签 [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.
python - 用于 Quickbooks Web 连接器的 Python Soap 服务器
我正在编写一个 Soap 服务器来与 quickbooks 网络连接器进行交互,我什至不知道从哪里开始。我有 wsdl 文件,以及 Web 连接器所需的所有函数和参数的列表,但我真的不知道从哪里开始。我找不到任何关于 python 的真正文档,有一些 php 教程,但这不是我所需要的。我尝试使用 ZSI 并让它生成文件,但我不知道如何使用它们。如果有人对此有任何经验,我将不胜感激您的意见。
谢谢
php - PHP SoapServer 和复杂类型
我正在使用 SoapServer 类在 PHP 中构建 Web 服务,但我遇到了复杂类型转换的问题。
WSDL 是完全有效的,PHP SoapClient 可以完美地处理它,但似乎存在返回的复杂类型未正确转换的问题。当在 .Net 中使用服务时,这一点就暴露出来了,因为我得到的异常表明该类型不存在于给定的命名空间中。
我多次破坏了我的函数,更改了元素上的命名空间,但是.Net 继续给我错误,不管我使用什么命名空间。
考虑以下脚本的缩写:
简短的回应:
我注意到它xmlns:ns1
是通过 WSDL 定义的,并且它确实与 WSDL 中的命名空间相匹配。但是,.Net SOAP 客户端似乎不理解该command
元素是在那里定义的。但是,它确实明白这ArrayOfCommand
是定义的地方。
所以我的问题是多方面的:
- 这是 SoapServer 的已知错误吗?
- 如果没有,我是否在我的 WSDL 中遗漏了一些严重的东西?
- 我没有正确编码我的对象吗?
- 这是.Net的问题吗?如果是这样,解决方法是什么?
php - PHP - SOAP-ENV:ClientBad Request after SoapServer->Handle() - 帮助
我得到了一个 PHP Web 服务,它运行了很长时间,但是在某个地方它停止了工作,我就是无法让它再次工作。
我得到了一些 php 页面,我在其中所做的只是定义一个带有函数的类,最后我创建了 SoapServer。
看起来像这样 -
在 $soapserver->handle(); 之后 代码终止,我在我的网页上得到一个模糊的“SOAP-ENV:ClientBad Request”结果。
当我从我的索引页面“require_once”这个页面时会发生这种情况,所以我可以从我的索引页面调用在这个类中定义的函数。
我的猜测是,也许我一直在摆弄我的 WSDL 并且不知何故它搞砸了我的 while WebService,但我尝试查看它有什么问题,但无法解决任何问题。特别是因为这个恼人的模糊错误信息,这并没有真正的帮助。
谢谢!
php - 扩展 php SoapClient 以进行站点管理员身份验证
简洁版本
我想扩展SoapClient
,所以它在访问 WSDL 时在内部执行此操作:
长版
我有一个与此类似的 SOAP 请求:
如您所见,除了代理位之外,一切都非常标准。
代理的原因
我编写了代理来满足 Web 服务提供商的要求,即包括 WSDL 在内的所有端点都通过称为 siteminder 的身份验证系统进行处理。
代理的功能非常简单,如果用 linux 命令行 curl 编写,它会是这样的:
准确地说:
这一切都很好:)
但是最近服务提供商决定改变它的 WSDL。
它现在导入模式文件 ( .xsd
),这并没有那么糟糕,只是它与 WSDL 相关。
相对于 WSDL 文件意味着SoapClient
解析器现在从代理的位置查找模式文件。错误,找不到!
有关该问题的更多详细信息:
php SoapClient 在传递具有相对路径模式的 wsdl 时失败
所以我的问题是:
我如何重写SoapClient
(当然是通过扩展它),仍然通过站点管理员身份验证,但不必通过那个额外的代理?
我最初的想法是,我必须以某种方式重写 URI 访问器函数(如果存在),但在这方面没有太多文档,我不知道从哪里开始。
或者,我可能不得不以SoapServer
某种方式破解。
如果我能得到任何帮助,我将不胜感激,包括指向SoapClient
.
php - PHP SoapServer:如何禁用“响应”附加
我正在创建一个 SOAP 服务器(在 Symfony 中使用 ckWebservicePlugin),它需要遵守以下请求和响应结构(我已将其作为已经商定的规范)。
要求:
回应:
我遇到的问题是 SoapServer 总是将响应生成为请求方法的名称+附加的“响应”。
所以发出的响应 XML如下所示:
我希望输出是<ns1:USSDMessageResponse>
而不是<ns1:USSDMessageRequestResponse>
我正在使用的 WSDL如下所示:
检查了 SoapServer 文档,浏览了 R. Richards 的 Pro Xml 和 Web 服务,只是不知道如何告诉 SoapServer 响应名称应该是什么。
谢谢你。
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 中配置了什么错误?
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客户端,您使用“登录”和“密码”选项传递用户密码,然后在客户端处理此身份验证部分。
c# - 如何将 WCF 和 SOAP 集成到现有的服务器-客户端应用程序中?
我是服务器客户端应用程序的新手。
我正在尝试构建一个原型,其中 Java 服务器通过 http 与 .net WPF 客户端通信。服务器和客户端当前通过第三方消息传递系统 (Tibco) 进行通信。我做了一些研究并决定使用 SOAP 和 WCF。我一直在尝试查找有关如何实现此功能的教程,但似乎找不到任何适合我需要的东西。如果有人可以向我指出一些资源,像我这样的新手可以用来加快将 SOAP 和 WCF 实施到现有系统的速度,我将不胜感激。此外,如果有人对可以使用的任何其他协议有任何建议,请随时推荐。
php - PHP SoapVar 对象属性?
有没有人知道如何向 SoapVar 对象添加属性?看起来这很简单,但我无法接受/工作。
我查看了 PHP 文档和以下 stackoverflow 问题:
stackoverflow 问题: SoapVar/Param 和 SOAP 中的嵌套重复元素
我正在尝试添加一个类似这个数组示例的属性,但使用复杂的 SoapVar 对象。
最终结果是伤口
谢谢。
php - php SoapServer 不打印任何 xml 文档
全部
我使用下面的代码创建了一个肥皂服务器。我发现在 PHP 中创建 wsdl 文档有点困难。所以我决定使用非 wsdl 模式。
但是当我尝试访问这个程序时,它什么也没打印。网络浏览器和程序(我使用 SoapClient)
我厌倦了在客户端调用这样的函数:
我得到错误:
哪里错了?我不知道。:( 代码看起来不错。为什么没有打印?