java - 用于基于 Java 的 SOAP Web 服务的 PHP SOAP XML 格式
问题描述
当我使用 PHP 的 SOAP 库时,我从基于 Java 的 SOAP 服务器收到错误,因为信封的名称以 SOAP-ENV 为前缀。Web 服务需要:
我要发送的内容:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>...</SOAP-ENV:Header>
<SOAP-ENV:Body>...</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Web 服务需要什么:
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>...</s:Header>
<s:Body>...</s:Body>
</s:Envelope>
我已经浏览过php.net 的 SOAP 库文档。这部分似乎没有任何内容。
是的,这个 Web 服务的前缀是 SOAP-ENV: 还是 s:
以下是生成当前 XML 样式的内容:
$client = new SoapClient($url, array(
'soap_version' => SOAP_1_1,
'trace' => 1,
'use' => SOAP_LITERAL)
);
$result = $client->$method($dataObject);
任何帮助将不胜感激。
解决方案
这个解决方案对我有用。
class mySoapClient extends \SoapClient
{
public function __doRequest($request, $location, $action, $version, $one_way = 0)
{
$request = str_replace(
array('SOAP-ENV', 'other-text'),
array('s', 'new-other-text'),
$request
);
return parent::__doRequest($request, $location, $action, $version, $one_way);
}
}
该数组允许您触发一系列更改。
推荐阅读
- swift - 按下完成键后隐藏键盘 - Swift
- java - 将标题添加到 JFrame 窗口的边框
- .net-core - 观察者 OnError 委托未被多次调用
- python-3.x - 如何使用 Anaconda Python 3.6 安装 Caffe2
- html - 为什么我的移动 @media 查询上的 @keyframe 动画行为不正确?
- python - 如何使用 Python 编辑 MKV 文件中的元数据?
- assembly - 从引导加载程序进入保护模式时出现问题
- css - 带有 XML 文件加载的 ASP 菜单控件太慢
- reactjs - 如何在 react、material-ui 中以表单形式上传文件的 obSubmit 和 onChange 事件?
- exi - 找不到将 EXI 压缩作为有效负载的 http 客户端/服务器的代码示例