【问题标题】:Raw text SOAP message with PHP使用 PHP 的原始文本 SOAP 消息
【发布时间】:2012-11-07 07:59:20
【问题描述】:

我正在尝试在我自己的 PHP 应用程序和其他“等待”(侦听)SOAP 消息的外部软件之间进行集成。但我的情况的关键问题是,这个监听 SOAP 消息的软件只接受 RAW 内容,没有可以调用的方法,也没有可以使用的 Wsdl。

是的,我知道...这很奇怪,因为使用 SOAP,您通常应该发送带有一些参数的方法请求,但在这种情况下,我唯一拥有的是一个 URL,我应该使用应该包含的 SOAP 消息发送该 URL只有一个字符串(以特殊方式格式化,这不是问题),然后这个服务器将返回给我的 PHP 应用程序另一个包含字符串的 SOAP 消息。就这样。

似乎在我的情况下我不能使用 PHP SOAP 库,因为我没有方法(或函数)可以调用;我唯一拥有的是一个 URL 和一个我应该像参数一样传递的字符串。我一直在考虑使用 PHP 套接字创建一个基本的 SOAP 消息到那个“奇怪的肥皂服务器”,但我不知道如何去做,或者我如何用 PHP 创建一种让我的应用程序等待的方法来自该外部服务器的答案。

非常感谢您提前提供的帮助。

【问题讨论】:

    标签: php sockets networking soap tcp


    【解决方案1】:

    您最好自己制作 WSDL。这不是最简单的事情,但它有据可查,因此您应该能够弄清楚。

    没有必要从您将请求发送到的服务中获取 WSDL(在某些情况下,最好在本地拥有 WSDL),因此您只需使用该本地 WSDL 在 PHP 中初始化默认的 SOAP 客户端,然后你就走了。

    【讨论】:

    • 谢谢你的回答南妮。你的意思是这个 wsdl 会像我的 php 应用程序和外部服务器之间的“解析器”一样确认?如果是这样,我想我可以定义一个“虚构”方法(将从我的 php 应用程序中调用),但即使在那种情况下我也有同样的问题。如果我不知道该外部服务器提供什么方法​​,我如何在应该发送到外部服务器的 SOAP 消息上打包原始字符串?可以这样定义wsdl吗?我想不出它是怎么做到的。你能给我带来一条线索吗?再次感谢 4 您的帮助。
    • 嗯,我可能不太明白你的问题。您确定它是实际的 SOAP,而不仅仅是普通的 XML?因为我在想,虽然什么都没有定义,但你也许能弄清楚。示例:如果我有一个名为method1 的方法使用参数parameter1,这可能会转化为某种类型的SOAP 调用,该调用会转到URL example.com/method1,而在SOAP 中调用你的parameter1。因此,在您的情况下,您可能会从正在调用的 url 中找到方法名称,并从 SOAP 调用中获取参数 -> 然后您可以尝试自己修复一个 WSDL
    • 再次感谢 Nanne 的回答。好吧,我知道这是一个额外的情况,但是是的,我应该向服务器发送一条 SOAP 消息,但我只有一个像 xxx.xxx.xxx.xxx:port 这样的 url 和一个包含 HL7 消息的字符串,这本质上是一个简单的以特殊方式格式化的字符串(假设它会被这个外部服务器理解,它是一个 Rhapshody 集成引擎)。这就是我为了向这个“外部肥皂服务器”发送 SOAP 消息而拥有的一切从我的 PHP 页面。我没有 XML 模板左右,没有要调用的方法,也没有 wsdl。
    • 顺便... SOAP 请求应该通过 http 协议完成,因为我正在考虑编写一个简单的 SOAP 消息并使用 PHP 套接字直接通过 tcp 发送它的可能性。但我不知道在这种情况下如何处理响应。再次感谢您的帮助 Nanne。
    • 嗯,但你知道你需要发送什么,不是吗?你可以编译你自己的XML,让它看起来像你想要的,然后手动发送?或者你甚至不确定你的最终信息应该是什么样子?如果你这样做了,你可以通过curl 发送它(例如参见这个问题stackoverflow.com/questions/1660983/…)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多