尝试使用Yaws运行SOAP示例时出现异常

时间:2017-04-27 23:15:14

标签: soap erlang yaws

我正在尝试使用Yaws运行this SOAP示例。

我相信我正确安装了erlsom。

这就是我得到的:

    1> inets:start().
    ok
    2> yaws_soap_lib:call(
    2>       "http://www.webservicex.net/WeatherForecast.asmx?WSDL",
    2>       "GetWeatherByPlaceName",
    2>       ["Boston"]).
    {ok,undefined,
        [{'soap:Fault',[],
                       {qname,"http://schemas.xmlsoap.org/soap/envelope/","Server",
                              "soap","soap"},
                       "System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> 
    System.Net.WebException: The request failed with the error message:
    \r\n--\r\n<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>301 Moved Permanently</title>\n</head><body>\n<h1>Moved Permanently</h1>\n<p>The document has moved 
<a href=\"http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php\">here</a>.</p>\n<hr>\n<address>Apache/2.2.15 (Red Hat) Server at www.weather.gov Port 80</address>\n</body></html>\n\r\n--.\r\n   
    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)\r\n   
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)\r\n   
    at WeatherService.www.nws.noaa.gov.ndfdXML.NDFDgen(Decimal latitude, Decimal longitude, productType product, DateTime startTime, DateTime endTime, weatherParametersType weatherParameters)\r\n   
    at WeatherService.WeatherForecast.getData(Double latitude, Double longtitude)\r\n   at WeatherService.WeatherForecast.GetWeatherByPlaceName(String PlaceName)\r\n   --- End of inner exception stack trace ---",
                       undefined,
                       {'soap:detail',[],undefined}}]}

1 个答案:

答案 0 :(得分:1)

我在SoapUI中尝试了这项服务并获得了相同的结果。如果你看一下回答,就说:

  

301永久移动

这意味着服务端点不在您使用的URL的WSDL中指定的位置。它表示Web服务现在在这里:

  

http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php

但它不是同一个Web服务。我尝试了一种方法,似乎无论谁做出来都不太了解SOAP。该方法将转义的XML文档作为有效负载返回。

所以,最重要的是,看起来您的尝试是正确的(或者至少部分正确),他们只是将服务移到其他地方。