【问题标题】:Using PHP soap service with Delphi without WSDL?在没有 WSDL 的情况下将 PHP 肥皂服务与 Delphi 一起使用?
【发布时间】:2011-10-15 22:32:34
【问题描述】:

当我拥有 WSDL 时,我非常熟悉在 Delphi 中使用 Web 服务。我只需使用向导,几秒钟后我就可以启动并运行。

我现在面临一个挑战,我得到了一个用 PHP 编写的肥皂接口,没有任何 WSDL 模式。

给我的 PHP 示例是:

<?php
// The xml to be sent to the webService
$reqest_string = <<<XML
<test_api>
    <request>1</request>
</test_api>
XML;

// create web service client
$client = new WSClient(array("to" => "http://api.infax.co.za/edge_api.php"));

//  send request to the web service
$reply = $client->request($reqest_string);

// display the responce from the webservice
$xml_str = simplexml_load_string($reply->str);

// display response on screen
echo "Came from server = ".$xml_str->response."<br>";
?>

我尝试将 xml 发布到 url,但我收到一个关于不存在的函数的肥皂错误。

有什么想法吗??

【问题讨论】:

  • 你知道你要请求的函数是怎么命名的吗?
  • 根据 2 页 api 文档,可以使用 test_api 函数进行测试:
  • SOAP Docs 交叉核对,让您知道自己在做什么。为了发现一个你不完全了解并且想要尝试的服务,我会首先使用一些 SOAP GUI 工具来探测函数名称和参数类型。
  • 函数名称和参数我很确定,只是不知道如何在没有 WSDL 的情况下在 Delphi 中实现它。我可以对 WSDL 进行逆向工程吗?
  • 在德尔福?为什么要发布 PHP 代码?是的,您可以自己编写 WSDL 并将其提供给 SOAP 客户端。

标签: php delphi soap


【解决方案1】:

对于非常简单的 SOAP Web 服务,遵循现有示例/文档或(如果两者都不够好)使用 HTTP 代理 (fiddler2) 记录交互可能会更容易,然后使用您的 XML 库对通信进行编码选择。

【讨论】:

  • 谢谢,我尝试过使用 SoapUI,但在继续之前似乎需要 WSDL?
  • 你是对的 - 请参阅 stackoverflow.com/questions/5389568/… - 所以我编辑了我的答案
  • 该死的希望我可以使用 SoapUI 来构建 WSDL。我有功能列表,我会尝试手动破解它。开始/运行/Notepad.exe
猜你喜欢
  • 2011-01-10
  • 2018-05-02
  • 1970-01-01
  • 2017-10-30
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多