gpt4 book ai didi

php - 调用 .NET 的 SOAP PHP。无参数

转载 作者:行者123 更新时间:2023-12-04 06:41:03 24 4
gpt4 key购买 nike

各位,

我在 PHP 中使用 SOAPClient 来调用 .NET web 服务。一切都很好,直到我传递参数的地步。远程 Web 服务向处理响应的 listener.php 文件发出请求,但是目前它似乎无法获取参数......在发送之前检查请求似乎没有显示参数在 XML 中。

有人可以明确地告诉我如何传递参数吗?到目前为止,我已经看到了大约 3 种不同的方式,包括但不限于以下方式:
$pCriteria->AuctionID = new SoapVar($auction_id, XSD_INT, 'xsd:int');
或者:
$ar_bidupdate_params_total = array('AuctionID' => $auction_id,'parameter2... etc..)
或者:
$ar_bidupdate_params = array(
new SoapParam($auction_id, 'AuctionID'),

示例代码还显示了以各种方式调用它(从我在网上看到的)。
$info = $soapClient->__call("BidUpdate", array($pCriteria));
或者
$info = $client->BidUpdate($pCriteria);
问题是,1) 如何使用 native SoapClient 可靠地传递这些参数,以及 2) 执行此操作的最佳方法是什么?

或者,如果我不能让它发挥作用,我可能只是即时构建 XML。如果我选择这种方法,发送 XML 字符串的最佳方式是什么?

最佳答案

为了证明您的担忧:是的,使用 SoapClient 可能令人沮丧。主要是因为文档。不过,这里有一段示例代码供您使用,我不久前为一个项目工作过。我最终在支付网关的图书馆中使用了这种技术。我知道这对于从字符串名称取消引用的函数调用来说并不是很漂亮,但它确实有效。

$method = "ACTION";
$wsdl = "WSDLFILE.wsdl";
$parameters = array (
'location' => "http://url.com",
'local_cert' => "/full/path/to/CERTIFICATE.pem,"
'passphrase' => "TEST-PASSWORD",
'use' => SOAP_ENCODED ,
'connection_timeout' => 4,
'user_agent' => null
);
$client = new SoapClient( $wsdl, $parameters );
$response = $client->{$method}( $data );
var_dump( $response );

详细说明,在您设置了 wsdl 和证书(如果需要)之后,SoapClient 会即时创建一个与 WSDL 中的内容相对应的函数($method),即:用于诸如“Capture()”之类的操作或“授权()”。然后客户端处理 XML 发送/解析。是否使用 SOAP_ENCODED 以及如何传递参数实际上取决于另一端的内容。

不过,我已经处理过手动创建信封 XML,我建议不要这样做。只要您获得良好的 WSDL 转储(.NET 项目将自动执行该转储并且不应该成为问题),如果/当它被更改/更新而不是必须手动进行时,这是避免维护噩梦的好方法旋转 XML 文本。

关于php - 调用 .NET 的 SOAP PHP。无参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com