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应该更新。作为解决方法,您至少有两个选项:
这是一个丑陋的黑客行为,但以下是我如何处理SOAP请求: 编写一个包含以下内容的函数/模块:
SoapAction
头集(使用您选择的客户端)发出HTTP POST请求这是一个丑陋的黑客行为,但以下是我如何处理SOAP请求: 编写一个包含以下内容的函数/模块:
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响应构造回客户端。