PHP SOAP 请求全部小写

2024-04-03

我创建了一个 Web 服务并使用 SoapUI 来验证它是否正常工作。然而,PHP 客户端在尝试访问它时遇到致命错误。

我设置了一个 try/catch,以便可以查看输出 SOAP 请求并执行var_dump。当我查看请求并var_dump,它显示为全小写(甚至是我手动键入 XML 的自定义标头)。

我知道 XML 区分大小写,当我将请求放回到soapUI 并正确更改大小写时,我会从 Web 服务获得正确的响应。

是什么导致 SOAP 请求将所有内容更改为小写?

//The WSDL url
$wsurl = "http://domain:port/mywebservice.wsdl";

//Custom header setup
$ws_username = 'myuser';
$ws_password = 'mypass';
$ws_authheader = '<wsse:Security soap:mustUnderstand="1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken>
        <wsse:Username>'.$ws_username.'</wsse:Username>
        <wsse:Password>'.$ws_password.'</wsse:Password>
    </wsse:UsernameToken>
</wsse:Security>';

//XML SOAP Security variable
$ws_authvars = new SoapVar($ws_authheader,XSD_ANYXML);

//SOAP Security header
$ws_header = new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security",$ws_authvars);

//SOAP client - trace is set to true so faults can be backtraced
$ws_client = new SoapClient($wsurl, array('trace'=>true));

//SOAP client parameters
$params = array('PARAM1'=>'123456',
                'PARAM2'=>'ABCDE',
                'PARAM3'=>'ABCD');

try {
    //SOAP response
    $messages = $ws_client->__soapCall('WSMETHOD',array('parameters'=>$params),NULL, $ws_header);
    //print_r($messages);
}
catch (SoapFault $fault) {
    echo "\n";
    print_r($ws_client->__getLastRequest());
    echo "\n";
    var_dump($ws_client);
}

我的 __getLastRequest 返回此值(请注意,字段值保留其正确的大小写):

<!--?xml version="1.0" encoding="UTF-8"?-->
<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="mynamespaceurl" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <soap-env:header>
        <wsse:security soap:mustunderstand="1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:usernametoken>
                <wsse:username>myuser</wsse:username>
                <wsse:password>mypass</wsse:password>
            </wsse:usernametoken>
        </wsse:security>
    </soap-env:header>
    <soap-env:body>
        <ns1:wsmethod>
            <ns1:param1>123456</ns1:param1>
            <ns1:param2>ABCDE</ns1:param2>
            <ns1:param3>ABCD</ns1:param3>
        </ns1:wsmethod>
    </soap-env:body>
</soap-env:envelope>

确切的 SoapFault:

SoapFault exception: [SOAP-ENV:Server] null in C:\inetpub\wwwroot\mydirs\mypage.php:458 
Stack trace:
#0 C:\inetpub\wwwroot\mydirs\mypage.php(458): SoapClient &gt;__soapCall('wsmeth...', Array, NULL, Object(SoapHeader)) 
#1 {main}

它指示的行 (458) 是 $messages = $ws_client->__soapCall


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP SOAP 请求全部小写 的相关文章

随机推荐

  • 如何在某些数据结构中表示奇怪的图

    表示图的一种简单方法是使用以下形式的数据结构 1 2 3 2 1 3 3 1 2 该字典中的键是节点 边由它们连接到的其他节点的列表表示 如果链接不对称 此数据结构也可以轻松表示有向图 1 2 2 3 3 1 我对图论了解不多 所以我要提出
  • 选项 importNotUsedAsValues 已弃用

    有人可以帮我解决这个问题吗jsonfig json为一个精简的项目文件 它说的是importsNotUsedAsValues选项应替换为verbatimModuleSyntax compilerOptions moduleResolutio
  • 使用pyserial(python串口)的二进制数据

    pyserial中的serial write 方法似乎只发送字符串数据 我有像 0xc0 0x04 0x00 这样的数组 并且希望能够通过串行端口发送 接收它们 是否有针对原始 I O 的单独方法 我想我可能需要将数组更改为 xc0 x04
  • div 之间的换行会呈现一个空格。如何从 HTML 中消除它?

    我有以下布局 div style width 100px div style width 50 display inline block div1 div div style width 50 display inline block di
  • 数据切换和数据目标不起作用

    我一直在寻找不同的解决方案 但到目前为止没有一个能帮助我 我的下拉菜单不起作用 因为数据切换和数据目标没有 被识别 至少这就是我认为它不起作用的原因 我似乎找不到解决方案 所以我希望这里有人可以帮助我 这是代码
  • 使用递归在 C 中实现单链表:我做错了什么?

    我试图编写的程序的提示是这样的 创建一个链表和一组操作它的函数 所有循环 必须使用递归来完成 以下功能是 该列表将使用的函数 isempty 如果列表为空则返回true 否则返回true find v 查找某个值并返回其索引 如果不成功 则
  • Rails 4,如何正确配置smtp设置(gmail)

    我正在尝试在 Rails 4 中创建一个联系表单 我在这里进行了一些挖掘 并且能够让大部分内容正常工作 在这里关注 sethfri的工作Rails 4 中的联系表格邮寄程序 https stackoverflow com questions
  • 如何在端口 443 上运行 Spring Boot

    我在使用我们的 Spring Boot 应用程序之一时遇到了问题 我们让它在端口 8443 上使用 https 运行 一切正常 现在 我们正在构建与外部支付处理器的集成 它们要求我们在应用程序的端口 443 上有一个回调端点 一些研究告诉我
  • 为什么空锚标记 href 中使用 # 约定?

    我知道最好不要留下空的锚标记 在 jQuery 和其他语法中 我注意到每个人通常都使用 来填补空白 a href anchor text a 这个角色比用其他东西填充它更好还是更坏 例如 a href anchor text a 我没有理由
  • 有没有办法在 CSS 中指定文本或标题数字的使用?

    我选择的字体通常默认为文本数字 这是我喜欢它们的原因之一 但是 对于表格或标题 我想指定应使用衬里数字 CSS 有没有办法做到这一点 为了安抚搜索 旧式数字 文本数字 非衬里数字 中世纪数字 衬里数字 标题数字 Firefox 4 0有基本
  • 在 Replace() 表达式中添加换行符

    我正在尝试使用回归模型中的相关数据来注释 ggplot 中的图 我已遵循建议在这个帖子中 https stackoverflow com questions 7549694 ggplot2 adding regression line eq
  • 使用实体框架仅从日期时间值获取日期部分

    我只想从数据库 日期时间 值获取日期部分 我正在使用下面的代码 但它正在获取日期和时间部分 using FEntities context new FEntities DateTime date DateTime Now if contex
  • 如何在 iOS 应用程序中获取后台运行的应用程序详细信息?

    我想开发一个应用程序 该应用程序应该监视在我的 I Phone 设备 包括互联网浏览器 上运行了多少应用程序 请分享您对这篇文章的想法 有点像这样 https itunes apple com us app system manager i
  • Richfaces 和 Primefaces 彼此兼容吗?

    我现在使用 Primefaces 2 1 我尝试将 Richfaces 3 3 3 集成到我的应用程序中以便使用
  • ListView 项目布局 targetSdkVersion="17" 和 targetSdkVersion="18" 之间不同

    我刚刚将 Android SDK 更新到版本 18 并修改了我正在处理的项目以使用它而不是版本 17 事实证明 我的 ListView 现在看起来有很大不同 然而 只需在清单文件中将 targetSdkVersion 从 18 切换到 17
  • https 客户端使用客户端证书和密码通过 cpp-netlib 获取

    我正在尝试使用 cppnetlib 甚至 boost asio 库来连接以执行简单的 url 获取并将结果页面拉下来 我已经让它可以与http一起使用 甚至可以使用https使用cppnetlib 但我需要提供一个需要密码的客户端证书 不幸
  • Git Bash 是否通过 ssh 密钥确定身份?

    已经第三天了 我仍然无法解决以下问题 我最初在 2 年前创建了一个 GitHub 帐户 我相信我为此帐户生成了 SSH 密钥 我相信我已将 ssh 密钥加载到我的 ssh agent 程序中 然后将公钥放在我的 GitHub 帐户上 现在我
  • 当 Html 输入范围“step”不是范围“max”值的倍数时

    我遇到的情况是 我的范围滑块的步长不是最大值的倍数 因此滑块值仅变为 90 因为下一步将大于 100 片段
  • Windows 上的 PHP realpath 案例问题

    我的 Windows 服务器上有一个符号链接 其制作方式如下 F gt mkdir link target F gt mklink D link f link target 注意小写f 在符号链接目标中 在 PHP 中我运行这个 dir r
  • PHP SOAP 请求全部小写

    我创建了一个 Web 服务并使用 SoapUI 来验证它是否正常工作 然而 PHP 客户端在尝试访问它时遇到致命错误 我设置了一个 try catch 以便可以查看输出 SOAP 请求并执行var dump 当我查看请求并var dump