【问题标题】:Can I make a SOAP API call in Azure Logic App我可以在 Azure 逻辑应用中进行 SOAP API 调用吗
【发布时间】:2015-09-12 19:45:11
【问题描述】:

我是一位经验丰富的数据分析家,主要有 SQL 和 R 经验,很少使用 Python,不幸的是很少接触 .NET 和 PHP。我已经广泛搜索任何有类似问题的人,但不幸的是我还没有找到我要找的东西。

情况:我正在 Azure(使用 Apache Spark)上设置一个 HDInsight 集群,我需要从 SOAP API(无 RESTful API)中提取一些数据。

问题:我在哪里以及如何提取这些数据?我认为 Azure 中的 Logic App 会是一个合适的地方。但是,我在调用此 API 时并不十分成功。 我确实有一个带有适当 API 调用的有效 PHP 脚本。这是(部分)语法。

$client = new SoapClient('http://someURL?wsdl');
$webservice = new SoapClient('http://someotherURL?wsdl');
$session = $client->someOperationToLogin($var1, $var2, $var3);
$operation = $webservice->someOperationToGetData($session, $var4, $var5);
$session = $client->logout($session);

如您所见,我首先需要获取一个会话 ID,然后在后续调用中使用此会话 ID。据我了解,我无法通过简单的 HTTP 请求获取这些数据。

问题:

  1. 我可以通过 Azure 逻辑应用中的现有连接器之一直接调用这个特定的 SOAP API
  2. 如果 (1) 不可行,我可以使用现有的 PHP 脚本吗?如何以及在哪里?
  3. 是否有任何其他途径可以通过此 SOAP API 使用数据?例如:在 Spark/HDInsight 集群中使用 pyspark?

非常感谢您的帮助和指点。

【问题讨论】:

    标签: php api azure soap-client azure-logic-apps


    【解决方案1】:

    您可以通过普通 HTTP 连接器进行调用。

    1- 首先设置您的 Http 触发方法以发布并发送您的 xml 正文。 HTTP Trigger

    2- 使用您的 Soap End 的 url 进行 Http 操作,例如 abc.asmx xyz.svcHttp Call To Soap End 不要忘记将 Method To PostContent-Type 设置为 text/xml 作为标题。

    3- 最后将您的 Http 响应绑定到响应操作,将状态代码和正文设置为 HTTP 操作状态和正文 动态不要忘记设置为内容类型这里也设置为 text/xml Return Response Action

    4- 最后将响应组件的 run After 配置为 sun after Http Action Even If Faild , Canceld or time out 只是为了传递每个调用的状态代码,就像那样右键单击 Response 并配置在 conf Run After For response Action 之后运行。

    这是Full Flow的完整视图。

    如果这有帮助,请点赞。

    【讨论】:

      【解决方案2】:

      没有通过 Azure 逻辑应用中的现有连接器调用的 SOAP API。

      这是连接器和 API 应用程序参考列表:https://msdn.microsoft.com/en-us/library/azure/dn948518.aspx。 它们支持的功能都是基于 REST API 通过 Http/Https 实现的。

      Azure 上的所有服务和 API 几乎都基于 REST API 以兼容跨平台和跨语言场景。

      但即便如此,您也可以通过 Azure App Service 或 Cloud Service 创建自己的 SOAP API。请参考 http://azure.microsoft.com/en-us/documentation/services/app-service/api/https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-arm-with-api-app-provision/

      在 Azure HDInsight 中,您可以从存储服务和服务总线中提取一些数据。如果要使用 Azure Logic App,现有的连接器有 Blob 连接器和 ServiceBus 连接器,甚至 Dropbox 连接器。

      您可以参考下面的参考资料,使用 PHP 脚本访问作为 HDInsight 资源链接的 Azure 存储和 ServiceBus 服务,以存储/获取或发送/接收一些数据。 1.https://azure.microsoft.com/en-us/documentation/articles/storage-php-how-to-use-blobs/ 2.https://azure.microsoft.com/en-us/documentation/articles/service-bus-php-how-to-use-queues/.

      最好的问候。

      【讨论】:

        【解决方案3】:

        现在可以使用 SOAP to Rest 功能通过 Azure API 管理从 SOAP WSDL 文件创建 REST API。

        可以通过以下方式访问:

        Azure 门户 -> API 管理服务 -> -> API -> 添加 API -> WSDL

        设置完成后,可以很容易地从其他 Azure 产品访问此 API。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          • 2020-05-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多