Sending Raw XML via PHP SoapClient request(通过 PHP SoapClient 请求发送原始 XML)
问题描述
我正在尝试通过 PHP 和 SoapClient 简单地将 RAW xml 发送到网络服务.问题是当我对 XML 进行编码时,它会更改 XML 中元素的顺序,该顺序将转换为关联数组.
如何或什么是将以下 XML 作为字符串发送到我的 SoapClient 的最佳方式?
<小时><块引用>
更新/解决:这是我用来扩展 SOAP 客户端并发送我的原始 Soap Envelope 的代码:我在下面的回答
解决方案
更新/解决方案:这是我用来扩展 SOAP 客户端并发送我的原始 Soap Envelope 的代码
这是我扩展 SoapClient 的方式:
在我把它变成答案之前,也在 Pastie.org 上发布:http://pastie.org/3687935.
I am trying to simply send RAW xml to a webservice via PHP and SoapClient. The problem is when I encode my XML it changes the order of elements in the XML that is converted to an associative array.
How or what would be the best way to send the following XML as a string to my SoapClient?
Update/Resolution: Here is the code I used to extend the SOAP Client and send my raw Soap Envelope: My answer below
解决方案
Update/Resolution: Here is the code I used to extend the SOAP Client and send my raw Soap Envelope
Here is how I extended SoapClient:<?php
class MySoapClient extends SoapClient {
function __construct($wsdl, $options) {
parent::__construct($wsdl, $options);
$this->server = new SoapServer($wsdl, $options);
}
public function __doRequest($request, $location, $action, $version)
{
$result = parent::__doRequest($request, $location, $action, $version);
return $result;
}
function __myDoRequest($array,$op) {
$request = $array;
$location = 'http://xxxxx:xxxx/TransactionServices/TransactionServices6.asmx';
$action = 'http://www.micros.com/pos/les/TransactionServices/'.$op;
$version = '1';
$result =$this->__doRequest($request, $location, $action, $version);
return $result;
}
}
// To invoke my new custom method with my Soap Envelope already prepared.
$soapClient = new MySoapClient("http://xxxx:xxxx/TransactionServices/TransactionServices6.asmx?WSDL", array("trace" => 1));
$PostTransaction = $soapClient->__myDoRequest($orderRequest,$op);
?>
Also posted on pastie.org: http://pastie.org/3687935 before I turned this into the answer.
这篇关于通过 PHP SoapClient 请求发送原始 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!