Web services Erlang和SOAP服务——一块石头和一块硬地

Web services Erlang和SOAP服务——一块石头和一块硬地,web-services,soap,erlang,mnesia,yaws,Web Services,Soap,Erlang,Mnesia,Yaws,首先,我的问题似乎有重复之处,但我碰到了令我吃惊的事情Yaws-Webserver附带了一套完整的SOAP示例,但当我尝试按原样运行它时,我得到的是: 在文本形式中,这是我在shell中看到的内容: 1> inets:start(). ok 2> yaws_soap_lib:call("http://www.webservicex.net/WeatherForecast.asmx?WSDL","GetWeatherByPlaceName",["Boston"]). =ERROR R

首先,我的问题似乎有重复之处,但我碰到了令我吃惊的事情
Yaws-Webserver
附带了一套完整的SOAP示例,但当我尝试按原样运行它时,我得到的是:

在文本形式中,这是我在shell中看到的内容: 1> inets:start(). ok 2> yaws_soap_lib:call("http://www.webservicex.net/WeatherForecast.asmx?WSDL","GetWeatherByPlaceName",["Boston"]).
=ERROR REPORT==== 15-Apr-2013::20:32:11 === Call to tuple fun {erlsom_parse,xml2StructCallback}. Tuple funs are deprecated and will be removed in R16. Use "fun M:F/A" instead, for example "fun erlsom_parse:xml2StructCallback/2". (This warning will only be shown the first time a tuple fun is called.) {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> 1> inets:start()。 好啊 2> yaws_soap_lib:call(“,”GetWeatherByPlaceName“,[”Boston“])。
=错误报告===2013年4月15日::20:32:11=== 调用tuple fun{erlsom_parse,xml2StructCallback}。 元组FUN已弃用,将在R16中删除。改用“fun M:F/A”,例如“fun erlsom_parse:xml2StructCallback/2”。 (此警告仅在第一次调用tuple fun时显示。) {错误,{解码,“格式错误:prolog中的非法字符”}}
3> yaws_soap_lib:call(“,”GetWeatherByPlaceName“,[“Boston”])。 {错误,{解码,“格式错误:prolog中的非法字符”} 4>

您可以尝试下面的yaws示例。
另一个问题是,我尝试过其他SOAP库,如和,它们要么太旧,要么完全不可用。大多数解决方案,甚至yaws,都提到了他对
erlsom
的依赖,我认为这是XML解析的最佳选择。但是,我很难单独使用
erlsom
来提供soap服务

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

从官方网站上我们可以看到以下内容:

Tuple fun(具有模块名和函数的两元素元组)是 现在正式弃用,将在R16中删除。使用“乐趣M:F/A” 相反

因此,Yaws应该更新。作为解决方法,您至少有两个选项:

  • 图书馆
  • 或者,如果您不介意使用(并非如此)较旧的Erlang R15,我相信它应该可以工作,正如其他用户所报告的那样
  • 我们可以从官方网站上看到以下内容:

    Tuple fun(具有模块名和函数的两元素元组)是 现在正式弃用,将在R16中删除。使用“乐趣M:F/A” 相反

    因此,Yaws应该更新。作为解决方法,您至少有两个选项:

  • 图书馆
  • 或者,如果您不介意使用(并非如此)较旧的Erlang R15,我相信它应该可以工作,正如其他用户所报告的那样

  • 这是一个丑陋的黑客行为,但以下是我如何处理SOAP请求:

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

  • 设置一些请求模板(静态XML)并用
  • 使用
    SoapAction
    头集(使用您选择的客户端)发出HTTP POST请求
  • 使用以下命令从响应中删除重要内容:

  • 这是一个丑陋的黑客行为,但以下是我如何处理SOAP请求:

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

  • 设置一些请求模板(静态XML)并用
  • 使用
    SoapAction
    头集(使用您选择的客户端)发出HTTP POST请求
  • 使用以下命令从响应中删除重要内容:

  • 我现在也在玩Erlang和SOAP。我自己的天气预报有一些问题,但是天气预报的例子是现成的。我正在Linux上使用Erlang R15B02和Yaws 1.94。让我更改Yaws版本,然后查看。也可能是因为我使用的Windows 7仍然存在与yaws-1.94相同的问题。让我转到linux,看看结果如何。但是,有了R15B02,你还能从哪里得到
    乐趣
    警告呢?我现在也在玩Erlang和SOAP。我自己的天气预报有一些问题,但是天气预报的例子是现成的。我正在Linux上使用Erlang R15B02和Yaws 1.94。让我更改Yaws版本,然后查看。也可能是因为我使用的Windows 7仍然存在与yaws-1.94相同的问题。让我转到linux,看看结果如何。但是,有了R15B02,你还能从哪里得到
    乐趣
    警告?没错!这管用!。非常感谢。我使用
    erlsom-SAX
    解析从请求中获取所需的内容。我可以构造soap响应回客户端。真的!这管用!。非常感谢。我使用
    erlsom-SAX
    解析从请求中获取所需的内容。我可以将soap响应构造回客户端。