Ajax通过SOAP协议调用Web服务

前段时间做了一个用Ajax调用Web服务的Demo,在此记录一下。调用的是一个地理编码服务,该服务可以将地址转换为地理坐标,如下所示:

Ajax通过SOAP协议调用Web服务_第1张图片

点击该服务可以看到该服务SOAP形式的请求与返回结果形式,如下图所示:

Ajax通过SOAP协议调用Web服务_第2张图片

我们用Ajax通过SOAP协议调用Web服务,其实就是要构建SOAP形式的请求的xml,如上图所示,请求的xml格式一定要与上面给出的SOAP1.1 request保持一致。首先看一下画红框的头信息,Ajax的调用必须是POST请求,并且Ajax的Content-Type和SOAPAction这两个头信息也必须和上文该服务给出的一致。如下所示:

var url = "https://www.ip-assistance.pt/ws/gpsg/gps.asmx";//注意是https				
				xmlHttp.open("post", url, true);
				xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
				xmlHttp.setRequestHeader("SOAPAction","http://www.ip-assistance.pt/WS/GPS/FreeTextGeoCode");

从上图中可以看到,浏览器地址栏中的协议是https,所以我们Ajax的url也必须是https://...

全部代码如下:



	
		
				
	
	
		
lcCalle
lnResultados


需要注意的是,上文中所拼接的lcId的值是我随意写的,所以这个服务不能真正使用,要想使用需要向服务发布者申请一个key,此处只是假设我们已经获取了key为DBB031FBACB3,不过调用该服务的Ajax的代码逻辑确实是如上文所述,最后我们在回调函数的xmlHttp.responseXML中可以获取返回结果,具体如何解析就灵活多了。


你可能感兴趣的:(Web)