我目前正在开发一个基于Trafikanten API (http://reis.trafikanten.no/topp2009/topp2009ws.asmx)的公共交通系统网站
虽然它是Web服务,但该站点有几个功能。它是在SOAP格式的.NET框架中实现的。但我们需要在客户端语言中使用它的功能,如JavaScript,以便能够在网页中显示信息。有没有人能建议一些简单的方法来应对这种情况?
发布于 2011-02-18 00:50:09
假设您使用的是LAMP堆栈:
我将使用nusoap (http://sourceforge.net/projects/nusoap/)库编写一个PHP脚本来使用SOAP web服务,并通过AJAX调用将JSON返回给您的JavaScript。
编辑
在.NET中更简单,只需右键单击您的项目,然后选择Add a web service。然后,您可以像访问任何其他对象一样访问web服务的方法。至于在JS中使用它,您可以实现创建一个以JSON格式输出结果的ASP页面,然后使用jQuery使用它,就像使用LAMP堆栈一样。不过,使用ASP的回发功能,您最好让它在JS中做繁重的工作,并在视图后面的代码文件中直接使用web服务。
希望这能有所帮助。
发布于 2011-02-18 02:34:04
如果服务不支持JSONP,它可能不支持ASMX服务,您需要创建一个服务代理来在本地web服务器上运行。然后,使用本地服务作为中介,绕过浏览器的跨域限制。
如果您在ASP.NET项目中添加了对Top2009WS的服务引用,则可以使用类似下面的代码作为GetLines()的服务器端代理,例如:
[WebMethod]
public Line[] GetLines(int ID) {
var client = new Topp2009WS.Topp2009WSSoapClient();
client.open();
return client.GetLines(ID);
}然后,您可以像这样在客户端通过代理调用:
$.ajax({
url: 'Service.asmx/GetLines',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: '{"ID":' + 12345 + '}',
success: function(response) {
// Alerts the first result's "LineName"
alert(response.d[0].LineName);
}
});有关using jQuery to call the web service的更多信息,请参阅此帖子。
发布于 2011-02-18 01:57:09
我用.NET构建了一个“组合服务”或适配器服务,然后调用其他服务。组合服务将与SOAP与.NET服务通信,而您的应用程序将与您的组合服务通信。
https://stackoverflow.com/questions/5031867
复制相似问题