2

我的问题可能首先似乎有重复,但我遇到了令我惊讶的事情。Yaws Webserver附带一个完整的 SOAP 示例,但是当我尝试按原样运行它时,这就是我得到的: 在此处输入图像描述

在文本形式中,这是我在 shell 中看到的:

1> inets:开始()。
好的
2> yaws_soap_lib:call(" http://www.webservicex.net/WeatherForecast.asmx?WSDL ","GetWeatherByPlaceName",["波士顿"])。
=错误报告==== 2013 年 4 月 15 日::20:32:11 === 调用元组 fun {erlsom_parse,xml2StructCallback}。 元组函数已弃用,将在 R16 中删除。请改用“fun M:F/A”,例如“fun erlsom_parse:xml2StructCallback/2”。 (这个警告只会在第一次调用元组 fun 时显示。) {error,{decoding,"Malformed: Illegal character in prolog"}}
3> yaws_soap_lib:call(" http://www.webservicex.net/WeatherForecast.asmx?WSDL ","GetWeatherByPlaceName",["Boston"]) . {error,{decoding,"Malformed: Illegal character in prolog"}} 4>


您可以尝试本页后面的 yaws 示例。
另一个问题是,我尝试过其他 SOAP 库,例如洗涤剂erlsoap,它们要么太旧,要么完全无法使用。erlsom大多数解决方案,甚至是 yaws,都提到了他对 XML 解析的依赖。但是,我很难erlsom单枪匹马地提供肥皂服务。

有人提供了一些关于我如何在 erlang 中使用肥皂服务(sa 客户端和服务器)的信息,请解释我在使用 yaws 时遇到的错误。我正在使用最新的 yaws 版本和 erlang 15B。

4

2 回答 2

3

这是一个丑陋的黑客,但这是我处理 SOAP 请求的方式:

编写一个包含以下内容的函数/模块:

  1. 设置一些请求模板(静态 XML)并用erlydtl填充它们
  2. 发出带有SoapAction标头集的 HTTP POST 请求(使用您选择的客户端)。
  3. 使用erlsom从响应中删除重要内容
于 2013-04-17T09:32:15.703 回答
1

从官方文档中我们可以读到以下内容:

元组 funs(具有模块名称和函数的两个元素元组)现已正式弃用,并将在 R16 中删除。请改用“有趣的 M:F/A”。

所以,Yaws应该更新。作为一种解决方法,您至少有两个选择:

  1. 洗涤剂库_
  2. 或者,如果您不介意使用(并非如此)较旧的 Erlang R15,我相信它应该可以工作,正如其他用户所报告的那样。
于 2013-04-16T07:48:54.830 回答